Linux上的gcc 4.8.2-使用线程崩溃的简单程序

我刚刚在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

上一篇:可变重分配中的C 11内存释放


下一篇:【STM32F429的DSP教程】第30章 STM32F429复数浮点FFT(支持单精度和双精度)