在linux下的GCC中使用std :: thread的正确链接选项是什么?

在linux下的GCC中使用std :: thread的正确链接选项是什么?

嗨,我正在尝试使用std::threadG ++。这是我的测试代码

#include <thread>#include <iostream>int main(int, char **){
    std::thread tt([](){ std::cout<<"Thread!"<<std::endl; });
    tt.join();}

它编译,但当我尝试运行它时,结果是:

terminate called after throwing an instance of 'std::system_error'
  what():  Operation not permitted 
Aborted

我的编译器版本:

$ g++ --version
g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1Copyright (C) 2011 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.

我的测试代码出了什么问题?

更新:我使用以下命令行来编译和运行我的代码。

$ g++ -std=c++0x test.cpp
$ ./a.out

我试过

$ g++ -std=c++0x -lpthread test.cpp
$ ./a.out

还是一样。


慕容708150
浏览 1264回答 3
3回答

宝慕林4294392

我认为在Linux上使用pthread实现std::thread所以你需要指定-pthread编译器选项。由于这是一个连接选项,这个编译器选项必须是AFTER源文件:$&nbsp;g++&nbsp;-std=c++0x&nbsp;test.cpp&nbsp;-pthread

慕后森

除了使用-std=c++0x,-pthread你不能使用-static。
打开App,查看更多内容
随时随地看视频慕课网APP