2011-03-24 23 views
4

這是一個非常基本的問題,我只發帖,因爲我已經花了一些時間。這是我迄今所做的:找不到助推庫

  1. 下載並編譯boost庫:

    sudo ./bootstrap.shsudo ./bjam install

    這樣,它被安裝到/usr/local/lib

  2. 在我的源代碼,我只說:

    #include <boost/asio.hpp> 
    using boost::asio::ip::tcp 
    
  3. 我編譯:

    g++ -I/usr/lib/jvm/java-6-openjdk/include -L/usr/local/lib -fPIC -lboost_system -shared -o libagent.so agent.cpp

  4. 然而,ldd -d ./libagent.so給我:

    libboost_system.so.1.46.1 => not found

  5. 但沒有錯誤拋出,使用-lboost_systemls /usr/local/lib讓我當除其他事項外:

    libboost_system.so
    libboost_system.a

我缺少什麼?

+0

是的,它是-o libagent.so – 2011-03-24 09:30:24

+0

你運行ldconfig嗎? http://linux.die.net/man/8/ldconfig – PhilMY 2011-03-24 09:36:33

回答

3

./bjam install工具還運行了ldconfig(8)工具嗎?需要在安裝新庫之後運行ldconfig(8)以在程序執行時更新ld.so(8)所使用的高速緩存。

g++ -I/usr/lib/jvm/java-6-openjdk/include -L/usr/local/lib -Wl,-rpath,/usr/local/lib -fPIC -lboost_system -shared -o libagent.so agent.cpp 

這使得它看起來在運行時的/ usr/local/lib目錄Boost庫,-L選項僅使得其在查看/ usr/local/lib目錄:

+1

這個。您需要運行(以root身份)'ldconfig -u'。 – 2011-03-24 09:32:43

+0

而/ usr/local/lib應該在ldconfig的路徑列表中。 – jopa 2011-03-24 09:33:52

+0

@ Alexandre-c -u是一個未知的命令 – 2011-03-24 09:36:11

2

你應該編譯在編譯時。