/usr/local/boost_1_49_0/
并运行bootstrap.sh
来构建需要构建的Boost库。这很好。.so
.a
和/usr/local/boost_1_49_0/stage/lib
个文件
lboost_regex
和#include <boost/regex>
。这也没关系。最后在asio上试了一下这个例子,我试过了:
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
答案 0 :(得分:3)
-L
选项仅设置编译时库搜索路径;如果您希望在运行时找到共享库,则必须在运行时知道其目录。
使用g++
设置此方法的一种方法是通过编译器将-rpath
传递给链接器;你可以说-Wl,-rpath -Wl,/usr/local/boost_1_49_0/stage/lib
。 (这会将目录嵌入可执行文件中。)
另一种方法是在默认情况下链接器搜索的位置安装库(例如/usr/local/lib
可能是这样的位置,具体取决于系统的配置方式。)
另一种方法是设置一个环境变量,例如LD_LIBRARY_PATH
(Linux或Solaris)或DYLD_LIBRARY_PATH
(Mac OS X),告诉链接器从shell启动可执行文件时搜索的位置变量已设置。
答案 1 :(得分:1)
您确定共享库位于加载程序可以找到的位置吗?将其放在系统范围的目录或与可执行文件相同的目录中。