2010-10-13 68 views
0

我安装从cygwin的升压包和具有目录/ usr /包括/升压包括一堆* .HPP文件,包括thread.hpp,这是我需要在C++文件以包括,经由如何在cygwin中使用boost :: thread编译一个简单的程序?

#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

未安装软件包还安装了预建库吗? – usta 2010-10-13 17:39:57

+0

也许,但我找不到它们。目录/ usr/include/boost只包含一堆hpp文件。 – jonderry 2010-10-13 17:44:13

+0

/usr/include用于标头。 Libs在其他地方,可能位于/ usr/lib,/ usr/local/lib或/ usr/share/lib之一 - 我不知道cygwin的确切位置。如果这些都不包含它们,'find/usr -name'libboost _ *“'会帮助:) – usta 2010-10-13 18:00:54

回答

2

EDIT(除去-GCC部分):g++ sample.cpp -lboost_thread-mt。您可能还需要添加-lpthread-pthread。如果仍然没有运气,请张贴你得到的错误。 HTH

+0

使用错误输出更新了问题。我也尝试了-lpthread和-pthread,但结果是一样的(-pthread是一个无法识别的选项) – jonderry 2010-10-13 20:29:05

+0

@jonderry:奇怪。 '-lboost_thread-mt'(没有-gcc)是否更好? – usta 2010-10-13 20:42:31

+0

是的。有用。谢谢! – jonderry 2010-10-13 20:44:46