这是一个非常基本的问题,我只是张贴,因为我已经花了一些时间。 这是我迄今为止所做的:
下载并编译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
我错过了什么?
./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。