Я пытаюсь скомпилировать некоторое программное обеспечение, которое я писал в Linux, которое использует некоторые причудливые новые функции C++0x на моем Mac. Я использовал MacPorts для установки пакета gcc45, который дал мне /opt/local/bin/g++-mp-4.5, однако этот компилятор не хочет ничего компилировать в <thread>
. Например, я пытаюсь скомпилировать:
//test.cpp
#include <thread>
int main()
{
std::thread x;
return 0;
}
и получить:
bash-3.2$ /opt/local/bin/g++-mp-4.5 -std=c++0x test.cpp
test.cpp: In function 'int main()':
test.cpp:5:2: error: 'thread' is not a member of 'std'
test.cpp:5:14: error: expected ';' before 'x'
Быстрый просмотр /opt/local/include/gcc45/c++/thread показывает, что класс std::thread определен, но защищен следующим:
#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
Опять же, это отлично работает на моей машине с Ubuntu, так как же правильно включить библиотеку c++0x <thread>
в версии MacPorts g++ 4.5 (g++-mp-4.5)? В противном случае, есть ли что-нибудь, что мне нужно знать (настроить флаги и т. д.), прежде чем я приступлю к компиляции gcc 4.5 самостоятельно?
Обновление: не похоже, что сообщество SO много знает об этом, поэтому, возможно, пришло время немного поближе познакомиться с разработчиками. Кто-нибудь знает об официальном списке рассылки, куда я мог бы переслать этот вопрос? Есть ли какие-нибудь советы по этикету, которые помогут мне получить ответ?
Обновление 2: я попросил у SO другое временное решение здесь, так что теперь я просто заменяю стандартные библиотеки boost::thread. К сожалению, boost::future отсутствует, так что это еще не совсем полное решение. Любая помощь по-прежнему будет принята с благодарностью.
-lpthread
. Скорее всего это ошибка, потому что GCC должен автоматически линковать стандартные библиотеки! - person AraK   schedule 07.01.2011