2012-04-16 111 views
0

我必須在包含舊版C++ boost庫的機器上進行演示。具體而言,我需要boost::thread,其中我使用mutex類的lock成員函數。不幸的是,舊版本(1.33.1)不包含這種方法。忽略以前版本的boost C++

我在目標機器上沒有root權限,我無法卸載以前版本的boost。我的解決方案是在目標機器上預編譯更新的庫,並鏈接到庫的較新版本。

庫編譯部分進行得很順利,一切都順利完成,但是當我嘗試編譯它時仍然表示它使用的是舊版本的boost。我做了一些環視(g ++ noob here),發現你可以手動指定一個位置來首先使用-L-I標誌查找標題和庫。我試圖用相對路徑使用這些(因爲我不知道從哪個演示將執行的目錄,但我知道我的新Boost庫的相對路徑),我想出了這個:

-bash-3.2$ g++ -I./include -L./lib main.cpp -lthread 
/usr/bin/ld: cannot find -lthread 
collect2: ld returned 1 exit status 

我一直在嘗試各種各樣的東西,比如在包含/庫目錄中指定一個更深入的路徑,但沒有運氣,我覺得我處於死衚衕。有任何想法嗎? 僅供參考,我期待使用boost 1.49.0。

+0

待辦事項./lib中有libthread.so嗎? – Attila 2012-04-16 01:43:42

+0

./lib包含以下文件:'libboost_thread.a','libboost_thread.so'和'libboost_thread.so.1.49.0' – 2012-04-16 01:45:08

回答

1

嘗試:

g++ -I./include -L./lib main.cpp -lboost_thread 

你需要指定-l.so文件導出的庫的名稱:離開關開始lib.so(如libboost_thread.so - >-lboost_thread

+1

它可能使用與系統上安裝的不同的配置設置編譯。查找BOOST構建過程的參數 – Attila 2012-04-16 01:49:33

+0

哦說得太快了:現在,當我運行可執行文件時,在加載共享庫時出現錯誤*錯誤:libboost_thread.so.1.49.0:無法打開共享對象文件:沒有這樣的文件或目錄*。 – 2012-04-16 01:50:11

+0

我對linux環境並不熟悉,但我認爲您需要設置其中一個環境變量,以便可執行文件可以找到共享庫(首先嚐試PATH:'export PATH = $ PATH:./ lib') – Attila 2012-04-16 01:52:15