2016-07-12 30 views
0

我正在編譯一個開源項目在我的機器上運行,這是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 

我不知道還有什麼要檢查更多。預先感謝您的幫助。

+0

這些函數都是內聯的,並在boost頭文件中定義。你的系統似乎有幾個版本的boost庫。你也有與這些庫相對應的頭文件嗎? –

+0

@ n.m。你能告訴我如何檢查我是否擁有與庫相應的正確頭文件?其實,我並不完全理解你的觀點。標題版本應該與庫相匹配嗎? –

+0

#include「boost/version.hpp」並打印BOOST_VERSION。 –

回答

0

你可以嘗試添加/usr/local/libLD_LIBRARY_PATH這樣

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH 
+0

謝謝你給我一個答案。 不幸的是,它沒有工作.. '$出口LD_LIBRARY_PATH =在/ usr/local/lib目錄:$ LD_LIBRARY_PATH
$回聲$ LD_LIBRARY_PATH
在/ usr/local/lib目錄:'
$ make'
但發出相同的錯誤消息。 –

0

您有靜態Boost庫對象(libboost_thread.so),但你已經安裝了加速發展的文件嗎?檢查/ usr/include/boost/thread目錄是否存在,並且其中包含* .hpp文件。如果不是,您可能需要爲您的發行版安裝libboost-thread-dev軟件包或直接從Boost.org下載頭文件。

+0

謝謝,我認爲它也被安裝,因爲/ usr/include/boost/thread目錄中有超過50個文件。 –

相關問題