2012-03-05 165 views
3

我試圖學習與boost庫的東西,但當我嘗試編譯包含boost :: threads的東西時遇到問題。 我鏈接過程中得到一個錯誤,這就是消息:鏈接boost ::線程

/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lboost-thread 

但它的奇怪,因爲這種情況,只有當我與一個普通用戶編寫,使用根我也沒有問題編譯。

在此先感謝。

+1

你跑的命令是什麼?通常你必須在那裏提供'-L [/ path/to/boost]',所以它知道在哪裏找到它。 – 2012-03-05 20:57:26

+0

最近版本的boost需要使用「-lboost_thread」 – dsign 2012-03-05 21:19:28

+0

這是我運行的命令: g ++ -L/usr/local/boost_1_48_0/stage/lib -lboost-thread threadBoost.cpp,但它只能用於根目錄 – alkz 2012-03-05 23:12:32

回答

1

檢查的lib名提升安裝路徑(默認是:/ usr/lib中/),如果是libboost_thread.so,加-lboost_thread。不要忘記用-L/usr/lib/boost指定升級目錄的路徑。 如果只是上班根,請檢查您的權限在此目錄中:

ls -la /usr/lib/ | grep boost 

你應該看到您的登錄,並rw_r_ [R _(檢查是否具有讀取權限)。

如果您對目錄和升壓LIB此權限,用gcc鏈接可以做到:

g++ obj.o obj2.o -L/usr/lib -lboost_thread 

,如果你沒有自己的文件或沒有讀取權限,以root身份登錄並將它們添加

chown -R /usr/lib <your login> 
chmod +r /usr/lib/lib*.so 
+1

我已經檢查的權限,但也有0K(777),我編譯如下: G ++ -L在/ usr /本地/ boost_1_48_0 /臺/ lib目錄-lboost線程threadBoost.cpp 但我仍然得到: 找不到 - LBOOST線程 – alkz 2012-03-06 12:28:20

0

添加/ path/to/boost到您的makefile庫包含路徑並且您的錯誤將消失。

另一種選擇是包括提升到您的LIBPATH變量

5

包括

#include <boost/thread/thread.hpp> 

其它鏈接器標記

-lboost_system -lboost_thread-mt