这是来自ubuntu 13.10和g ++ 4.8的错误,所以我关闭了这个问题。
within -Wl,--no-as-needed.
我的头上出了点问题。
我得到了一些代码,如
#include <iostream>
#include <thread>
int main(int argc, char* argv[])
{
{
std::thread t1([&]{ std::cout << "hello " << std::endl; });
t1.join();
}
return 0;
}
这是我的编译命令:
g++ -std=c++0x -lpthread test.cpp
ps:我已经更改了所有订单的链接顺序。
适用于g ++ 4.7和ubuntu 13.04 但它在g ++ 4.8.1和ubuntu 12.10上抛出了system_error
直到我使用 -fprofile-arcs 进行编译,效果很好。
吼叫:
g++ test.cpp -std=c++0x -fprofile-arcs -pthread
a.out
hello
g++ test.cpp -std=c++0x -pthread
a.out
terminate called after throwing an instance of 'std::system_error'
what():启用多线程以使用std :: thread:不允许操作
答案 0 :(得分:0)
只需跨越一个Ubuntu 12.10虚拟机
osmith@ubuntu1210 ~/src $ g++-4.8 --version
g++ (Ubuntu 4.8.1-2ubuntu1~12.10) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
使用此命令行编译:
osmith@ubuntu1210 ~/src $ g++-4.8 -std=c++11 -o test.exe test.cpp -pthread -lpthread
osmith@ubuntu1210 ~/src $ ./test.exe
hello