我的问题实际上是在这里描述的:Compiling multithread code with g++。 但是关于使用“-Wl, - no-as-needed”来解决这个问题的答案并不适用于我。
我已经在不同的顺序中添加了-Wl,--no-as-needed -pthread -std=c++0x
,但我仍然得到:
terminate called after throwing an instance of 'std::system_error'
what(): Enable multithreading to use std::thread: Operation not permitted"
怎么办?
Info:
Ubuntu 12.04LTS
Running Eclipse CDT
g++ v4.8.1
修改
我试着用-Wl,--no-as-needed -lpthread -std=c++0x
建造而没有运气。
代码:
#include <iostream>
#include <chrono>
#include <thread>
void foo()
{
std::cout << "Thread 1 created.." << std::endl;
}
int main()
{
std::thread t1(foo);
t1.join();
return 0;
}
修改: 所以不幸的是,你的建议都没有奏效。我决定改用Boost。
答案 0 :(得分:4)
-Wl,--no-as-needed
而非-Wl,--no_as_needed
,您使用连字符-pthread
是编译器的标志,而不是链接器,链接器的右侧是-lpthread
答案 1 :(得分:1)
g++ filename.c -std=c++11 -lpthread
我正在用上面的命令编译你的代码,它的工作完美。