我正在編譯一個開源項目在我的機器上運行,這是this project。它需要boost庫,所以我在我的ubuntu機器上安裝了Boost_1_55庫,但編譯過程沒有成功完成,打印出如下錯誤消息。鏈接失敗,未定義的引用libboost_thread
libtool: link: g++ -g -O3 -Wall -DKENLM_MAX_ORDER=6 -W -Wall -Wno-sign-compare -I./.. -pthread -I/usr/include -g -O2 -o .libs/query query_main.o ./.libs/libklm.so ../util/.libs/libklm_util.so -lz -L/usr/lib/x86_64-linux-gnu -lboost_program_options -lboost_thread -lboost_system -lpthread -lrt -pthread
../util/.libs/libklm_util.so: undefined reference to `boost::thread::join()'
../util/.libs/libklm_util.so: undefined reference to `boost::thread::~thread()'
./.libs/libklm.so: undefined reference to `boost::thread::start_thread()'
collect2: ld returned 1 exit status
This answer似乎是我的問題的解決方案,但中ls -al /usr/local/lib | grep thread
結果顯示我像下面。
libboost_thread.a
libboost_thread.so -> libboost_thread.so.1.55.0
libboost_thread.so.1.49.0
libboost_thread.so.1.55.0
我不知道還有什麼要檢查更多。預先感謝您的幫助。
這些函數都是內聯的,並在boost頭文件中定義。你的系統似乎有幾個版本的boost庫。你也有與這些庫相對應的頭文件嗎? –
@ n.m。你能告訴我如何檢查我是否擁有與庫相應的正確頭文件?其實,我並不完全理解你的觀點。標題版本應該與庫相匹配嗎? –
#include「boost/version.hpp」並打印BOOST_VERSION。 –