- 首先,我构建了需要通过编译
/usr/local/boost_1_49_0/
并运行bootstrap.sh
来构建的Boost库。这没问题。 - 步骤(1)创造了
/usr/local/boost_1_49_0/stage/lib
- 我测试链接到的库中的所有
.so
和.a
文件,说lboost_regex
和#include <boost/regex>
在我的源代码。这也没有问题。 最后尝试对ASIO的例子,我想:C++链接增强库
g++ -I/usr/local/boost_1_49_0 MAIN.cpp -o MAIN -L/usr/local/boost_1_49_0/stage/lib -lboost_thread -lboost_system -lpthread
(4)编制好了。但是,当我与./MAIN
运行程序时,我得到以下错误:
./MAIN: error while loading shared libraries: libboost_system.so.1.49.0: cannot open shared object file: No such file or directory
刚想rpath的警告 - 不要做,如果你打算二进制文件运送到其他人(或其他机器)。跟踪rpath错误可能会非常棘手和痛苦。 – 2012-07-07 05:06:30
但是,通过将$ ORIGIN嵌入到二进制文件的运行时路径中可以避免该问题。虽然$ ORIGIN路径仍然是易碎的,但它至少使搜索路径相对于“二进制位置在哪里”而不是系统上的特定位置。 – 2012-07-07 05:09:28
@KevinGrant好的,谢谢你把问题整理出来。尽管没有什么像麻烦free --static flag – 2012-07-08 04:33:15