C++ gcc 4.5.1为C++;0x线程支持
我正在尝试为cygwin编译GCC4.5.1,支持C++0x线程。 但是,生成的gcc无法识别-pthread选项 我的配置命令是: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=
./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