这是一个非常基本的问题,我只发帖,因为我已经花了一些时间。这就是我到目前为止所做的:
下载并编译了boost库:
sudo ./bootstrap.sh
和sudo ./bjam install
这种方式安装在/usr/local/lib
。
在我的源代码中,我只添加了:
#include <boost/asio.hpp> using boost::asio::ip::tcp
我用以下代码编译:
g++ -I/usr/lib/jvm/java-6-openjdk/include -L/usr/local/lib -fPIC -lboost_system -shared -o libagent.so agent.cpp
但是,ldd -d ./libagent.so
给了我:
libboost_system.so.1.46.1 => not found
但是在使用-lboost_system
和ls /usr/local/lib
时,我没有抛出任何错误:
libboost_system.so
libboost_system.a
我错过了什么?
答案 0 :(得分:3)
./bjam install
工具是否也运行了ldconfig(8)
工具?安装新库后,需要运行ldconfig(8)
以在程序执行时更新ld.so(8)
使用的缓存。
答案 1 :(得分:2)
你应该用:
编译它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。