解决Boost库链接出错问题

安装完最新的Boost库

官方说明中有一句话:

Finally,

$ ./b2 install

will leave Boost binaries in the lib/ subdirectory of your installation prefix. You will also find a copy of the Boost headers in the include/ subdirectory of the installation prefix, so you can henceforth use that directory as an #include path in place of the Boost root directory.

大部分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 I'd suggest you to install boost libraries using your package manager, anyway, this will make your life a lot simpler.

也就是说系统在运行程序时要先加载动态库,系统的搜寻目录在/etc/ld.so.conf或者/etc/ld.so.conf.d/*.conf中,而该目录中没有链接库所在的位置,要在该文件中手动加入目录地址或者在运行程序之前指定LD_LIBRARY_PATH的值

这样才能正确识别动态库

------------------------------------------------------------------------------------------------------------

更新:

一个更方便的方法是在IDE的environment variable中添加LD_LIBRARY_PATH=/usr/local/lib

然后运行即可,要不然只能使用terminal来运行

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

Java文件上传与下载【面试+工作】

1.servlet 如何实现文件的上传和下载? 1.1上传文件 通过前台选择文件,然后将资源上传到(即新建一个文件)到发布的资源文件下面, 下载就是url 到发...

5344
来自专栏运维技术迷

连仕彤博客Centos7安装Mysql数据库

自从Mysql数据库软件被sun公司收购后(后来sun又被Oracle收购),新东家一心一意的想着样把Mysql商业化(就是想卖钱),无奈之下Mysql的作者自...

3435
来自专栏IMWeb前端团队

解放双手:如何在本地调试远程服务器上的Node代码

写在前面 谈到node断点调试,目前主要有三种方式,通过node内置调试工具、通过IDE(如vscode)、通过node-inspector,三者本质上差不多。...

3358
来自专栏pangguoming

Centos7下配置Redis开机自启动

最近在做作业的时候需要用到Redis缓存,由于每次重启服务器都需要重新启动Redis,也是忒烦人,于是就有了这一篇博客,好,废话不多说。 只有两个步骤: 设置...

4314
来自专栏挖坑填坑

使用typescript开发angular模块(发布npm包)

922
来自专栏hotqin888的专栏

beego利用casbin进行权限管理——第一节 起步、测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

611
来自专栏散尽浮华

ping监控脚本案例分析

1503
来自专栏张善友的专栏

在64位Windows 7/2008操作系统上部署32位的Web应用程序错误

当你在64位Windows 7/2008操作系统上部署32位的Web应用程序,会出现这样的错误: Exception Details: System.BadIm...

1789
来自专栏后端之路

Sonar maven配置

在根pom增加sonar的url <sonar.host.url>http://XXXXX</sonar.host.url> 增加相关插件依赖 其中jacoco...

1686
来自专栏北京马哥教育

corosync+pacemaker+drbd+mysql来实现mysql的高可用和数据的同步

实现拓扑图: ? 实验流程: 先对两主机安装上corosync和pacemaker 两主机安装drbd服务,并且设置好drbd的组设备 ...

2637

扫描关注云+社区