2011-11-10 103 views
2

我在學習Boost線程。 我使用代碼從一個在線教程,有些錯誤,我意識到我需要加速的新版本,所以我下載了最新版本的到一個目錄,解壓縮它,並命令它安裝後:Boost/CentOS鏈接問題

./bootstrap.sh 
./bjam install 

我試圖運行示例代碼是這樣的:

#include <boost/thread.hpp> 
#include <iostream> 

using namespace std; 
using namespace boost; 

void threader() 
{ 
    for (int i = 0; i < 5; ++i) 
    { 
    sleep(1); 
    cout << boost::this_thread::get_id() << "-" << i << endl; 
    //cout << "-" << i << endl; 
    } 
} 
int main() 
{ 
    thread t(threader); 
    sleep(1); 
    thread u(threader); 
    t.join(); 
    u.join(); 
} 

我跟我跟老版的Boost使用同一行編譯(1.33在CentOS標配):

g++ -Wall -L/usr/local/lib -lboost_thread threadtest.cpp -o threadtest 

它編譯無誤的(不像老版的Boost),但是當我運行threadtest我得到:

./threadtest: error while loading shared libraries: libboost_thread.so.1.47.0: cannot open shared object file: No such file or directory 

尋找到/ usr/local/lib目錄dircetory我可以看到以下內容:

-rw-r--r-- 1 root root 217270 Nov 10 12:50 libboost_thread.a 
lrwxrwxrwx 1 root root  25 Nov 10 12:43 libboost_thread.so -> libboost_thread.so.1.47.0 
-rwxr-xr-x 1 root root 138719 Nov 10 12:43 libboost_thread.so.1.47.0 

所以我不明白爲什麼它不起作用。 我認爲這與編譯行的-lboost_thread部分有關。 我試圖鏈接到庫直接:

g++ -Wall -L/usr/local/lib libboost_thread.a threadtest.cpp -o threadtest 

但它再次無法找到該文件。 任何人都可以幫忙嗎?

回答

2

我需要用下面我lib目錄的路徑重新添加到我的LD_LIBRARY_PATH:

export LD_LIBRARY_PATH="/usr/local/lib/" 

該訣竅。