快速解决boost库链接出错的问题(分享)
安装完最新的Boost库 官方说明中有一句话: Finally, $ ./b2 install 大部分Boost库无需动态或静态编译链接,小部分如regex thread coroutine之类的库在编译自己的源代码时需要加入链接提示 比如在编译使用regex的库时命令如下: c++ -I /usr/local/include/boost/ main.cpp -o test1 -L /usr/local/lib -lboost_regex 完成后运行时: LD_LIBRARY_PATH="/usr/local/lib" ./test1 否则会报错: error while loading shared libraries: libboost_regex.so.1.64.0: cannot open shared object file: No such file or directory 这个错误在stackoverflow上给的解释是: The library cannot be found. Libraries are by default looked for in /lib,/usr/lib and the directories specified by /etc/ld.so.conf. Usually system libraries (like boost,if you installed it via your package manager) are located in /usr/lib,but it's probably not your case. Where are your boost libraries located on your system? Did you compile them by yourself? In this case you should tell the dynamic linker to look for your libraries in the directory they're located by using the LD_LIBRARY_PATH environment variable: LD_LIBRARY_PATH="your/boost/directory" ./testfgci 也就是说系统在运行程序时要先加载动态库,系统的搜寻目录在/etc/ld.so.conf或者/etc/ld.so.conf.d/*.conf中,而该目录中没有链接库所在的位置,要在该文件中手动加入目录地址或者在运行程序之前指定LD_LIBRARY_PATH的值 这样才能正确识别动态库 以上这篇快速解决boost库链接出错的问题(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。 (编辑:我爱制作网_潮州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |