Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ gcc 4.5.1为C++;0x线程支持_C++_Gcc_Cygwin - Fatal编程技术网

C++ gcc 4.5.1为C++;0x线程支持

C++ gcc 4.5.1为C++;0x线程支持,c++,gcc,cygwin,C++,Gcc,Cygwin,我正在尝试为cygwin编译GCC4.5.1,支持C++0x线程。 但是,生成的gcc无法识别-pthread选项 我的配置命令是: ./configure --enable-bootstrap --enable-shared --enable-shared-libgcc --with-gnu-ld --enable-languages=c,c++ --enable-libgomp --enable-libssp --enable-threads=

我正在尝试为cygwin编译GCC4.5.1,支持C++0x线程。 但是,生成的gcc无法识别-pthread选项

我的配置命令是:

./configure --enable-bootstrap --enable-shared --enable-shared-libgcc
            --with-gnu-ld --enable-languages=c,c++ --enable-libgomp
            --enable-libssp --enable-threads=posix --with-__thread
示例程序是:

#include <iostream>
#include <thread>
using namespace std;

void hello()
{
 cout << "Hello Concurrent World!" << endl;
}

int main()
{
 cout << "starting" << endl;
 thread t(hello);
 t.join();
 cout << "ending" << endl;
 return 0;
}

我的问题是我应该如何配置gcc?

我能够使用
g++
编译您的代码,只需
-pthread
-std=c++0x
标志,或者使用前面的标志加上
-lstdc++

但是,当我使用您的标志时,它不起作用(尽管错误非常不同),所以下次可能尝试使用以下标志(因为它不一定是(仅)由您使用错误的配置编译GCC引起的)


正如您在错误消息中看到的,问题不在于您的配置,而在于您的g++选项。使用

g++ -lpthread
对于pthreads(POSIX线程)和

对于boost线程。(-pthread错误。)

参见g的手册++

man gcc

您确定您正确地使用和理解了GCC吗?我对它了解不多,但有几件事看起来不对劲。是的,我应该用g++。但这两个选项都给出了相同的错误,即-pthread选项无法识别。我怀疑问题出在cygwin身上,如中所述:这是一个不知情的建议
-pthread
针对适当的库设置预处理器标志和链接,而
-lpthread
仅设置链接。对于cygwin,正确的选项是
-threads
,用于编译和链接。
g++ -lpthread
g++ -lboost_thread
man gcc