gcc 4.5.1 настраивает параметры для поддержки потоков C ++ 0x - PullRequest
3 голосов
/ 24 августа 2010

Я пытаюсь скомпилировать gcc 4.5.1 для cygwin с поддержкой потоков 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;
}

Я компилируюпрограмма на C ++, использующая

$ 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

Мой вопрос: как мне настроить gcc?

Ответы [ 2 ]

0 голосов
/ 29 октября 2011

Как вы видите в сообщении об ошибке, проблема не в вашей конфигурации, а в вашей опции g ++.Используйте

g++ -lpthread

для pthreads (потоки POSIX) и

g++ -lboost_thread

для потоков повышения.(-pthread неверен.)

см. руководство по g ++

man gcc
0 голосов
/ 24 августа 2010

Я смог скомпилировать ваш код с g++ только с флагами -pthread и -std=c++0x или с gcc, используя предыдущие флаги плюс -lstdc++.

Однако, когда я использовал ваши флаги, они не работали (хотя ошибка была совершенно другой), поэтому, возможно, попробуйте в следующий раз использовать следующие флаги (потому что это не обязательно должно быть вызвано (только) вашей компиляцией GCC с неверным конфигом).

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