开发者

gcc 4.5.1 configure options for C++0x thread support

I am trying to compile gcc 4.5.1 for cygwin with support for C++0x threads. However, the resulting gcc does not recognize the -pthread option.

My configure command is:

./configure --enable-bootstrap --enable-shared --enable-shared-libgcc
            --with-gnu-ld --enable-languages=c,c++ --enable-libgomp
            --enable-libssp --enable-threads=posix --wit开发者_运维技巧h-__thread

The sample program is:

#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;
}

I am compiling a C++ program using

$ gcc -Wall -g -std=c++0x -pthread Trial.cpp
gcc: unrecognized option '-pthread'
Trial.cpp: In function `int main()':
Trial.cpp:21:5: error: `thread' was not declared in this scope
Trial.cpp:21:12: error: expected `;' before `t'
Trial.cpp:22:5: error: `t' was not declared in this scope

My question is how should I configure gcc?


As you see in the error message, the problem is not with your configuration, but with your g++ option. Use

g++ -lpthread

for pthreads (POSIX threads) and

g++ -lboost_thread

for boost threads. (-pthread is wrong.)

see the manual of g++

man gcc


I was able to compile your code with g++ with just -pthread and -std=c++0x flags alone or with gcc using the previous flags plus -lstdc++.

However, when I used your flags, it did not work (the error was quite different though), so maybe try it with the following flags next time (because it does not have to necessarily be caused (only) by you compiling GCC with wrong config).

gcc -lstdc++ -std=c++0x -pthread your.cpp
g++ -std=c++0x -pthread your.cpp
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜