2010-10-13 4 views
0

Я установил пакет наддува от Cygwin и есть каталог/USR/включать/импульс, который включает в себя кучу * .hpp файлов, в том числе thread.hpp, которые мне нужно включить в C++ файл, черезКак скомпилировать простую программу, используя boost :: thread в cygwin?

#include <boost/thread.hpp> 

Кроме того, несколько файлов * .a, похоже, связаны с boost :: thread.

$ ls /usr/lib/libboost_thread* -1 
/usr/lib/libboost_thread-gcc-mt-1_33_1.a 
/usr/lib/libboost_thread-gcc-mt.a 
/usr/lib/libboost_thread-mt.a 
/usr/lib/libboost_thread-mt.dll.a 

Как выглядит команда компиляции g ++? Я понимаю, что я должен использовать некоторую комбинацию -L -I и -l, но я не уверен, что подавать для каждого аргумента, и пока что ничего не работает для меня.

Я попытался следующие:

$ g++ test.cpp -lboost_thread-gcc-mt 
/cygdrive/c/Users/jonderry/AppData/Local/Temp/ccaNCMaA.o:test.cpp:(.text$_ZN5boost6detail11thread_dataIPFvvEED 
0Ev[boost::detail::thread_data<void (*)()>::~thread_data()]+0x16): undefined reference to `boost::detail::thre 
ad_data_base::~thread_data_base()' 
... 
... 
+0

Не установил ли пакет install также готовые библиотеки? – usta

+0

Возможно, но я не могу их найти. Каталог/usr/include/boost просто содержит кучу hpp-файлов. – jonderry

+0

/usr/include для заголовков. Либы находятся в другом месте, возможно, в одном из/usr/lib,/usr/local/lib или/usr/share/lib - я точно не знаю, где для cygwin. Если ни один из них не содержит их, 'find/usr -name" libboost _ * "' поможет :) – usta

ответ

2

EDIT (удален -gcc часть): g++ sample.cpp -lboost_thread-mt. Возможно, вам придется добавить -lpthread или -pthread. Если вам все равно не повезло, отправьте полученные ошибки. HTH

+0

Вопрос обновлен с выходом ошибки. Я также попробовал -lpthread и -pthread, но результат был тем же (-pthread был непризнанным вариантом) – jonderry

+0

@jonderry: Strange. Улучшает работу '-lboost_thread-mt' (без -gcc)? – usta

+0

Да. Оно работает. Благодаря! – jonderry