C++ linking boost library
C++ linking boost library
- 首先,我通过转到
/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上尝试了这个例子,我尝试了:
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
-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启动可执行文件时要搜索的位置。
您确定共享库位于加载程序可以找到它的位置吗?将它放在系统范围的目录中,或者与可执行文件放在同一目录中。
这里有一个链接,包含有关加载器的更多信息。
相关文章:
- Boost Graph Library,修复节点大小
- C++ Boost SML Library
- CMAKE带有Boost Library Windows 10库未正确找到
- Boost asio library for networking (http client)
- Boost Graph Library:如何使用depth_first_visit,ColorMap的问题
- 如何将 Boost Library 添加到 RPI2 上的 QTCreator
- 使用Boost Library工具/根来编译错误
- C++ linking boost library
- 从 Boost C++ Library 构建特定的库
- "Mixing a dll boost library with a static runtime is a really bad idea..."
- Boost Library函数将JSON格式的属性树转换为点分隔的字符串
- 如何将一组C++动态分配的对象表示为BGL(Boost Graph Library)图,以获得它们的依赖图
- Boost.Asio HTTP library
- Borland C++ - Boost Library 1.55 Error
- 如何使用Boost Filesystem Library v3确定文件是否按路径包含
- Regex boost library comparing
- b2 vs bjam for building Boost library
- how to compile ASL (boost based Adobe C++ gui library) on wi
- interval_map boost library
- Boost multi_array library