我刚刚在Centos上安装了gcc 4.8.2(我正在使用devtoolset-2).我使用线程编写了一个非常简单的程序.它可以编译,但是执行时崩溃?
#include <thread>
#include <iostream>
void test()
{
std::cout << "test\n";
}
void main()
{
std::thread t(test);
t.join();
return 0;
}
我编译:
scl enable devtoolset-2 bash
c++ -o test test.cpp -std=c++11
我非常惊讶.我必须做错什么,不使用写libc等?你有什么主意我该如何调试.谢谢!
我在显然不使用gcc的Mac(Maverick)上编译它,并且工作正常.
解决方法:
在Linux上,应该将命令行选项-pthread与GCC和Clang一起使用进行编译和链接.在您的情况下,命令行应如下所示:
g++ -std=c++11 -Wall -Wextra -pthread test.cpp -o test
有关更多信息,请参见以下链接:
> https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_concurrency.html
> gcc – significance of -pthread flag when compiling
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52681