所以我写了一个程序来测试64位kubuntu linux版本13.04上的线程。实际上我从正在编写测试程序的其他人那里抢了代码。
#include <cstdlib>
#include <iostream>
#include <thread>
void task1(const std::string msg)
{
std::cout << "task1 says: " << msg << std::endl;
}
int main(int argc, char **argv)
{
std::thread t1(task1, "Hello");
t1.join();
return EXIT_SUCCESS;
}
我编译使用:
g++ -pthread -std=c++11 -c main.cpp
g++ main.o -o main.out
然后跑了:
./main.out
顺便说一下,当我使用-l'时,main.out会像所有可执行文件一样以绿色文本显示,但在其名称的末尾也有一个星号。这是为什么?
回到手头的问题:当我运行main.out时,出现了一个错误,其中说:
terminate called after throwing an instance of 'std::system_error'
what(): Operation not permitted
Aborted (core dumped)
任何有关如何解决这个问题的想法?
答案 0 :(得分:100)
您没有正确链接pthread,请尝试以下命令(注意:订单很重要)
g++ main.cpp -o main.out -pthread -std=c++11
OR
使用两个命令
执行此操作g++ -c main.cpp -pthread -std=c++11 // generate target object file
g++ main.o -o main.out -pthread -std=c++11 // link to target binary