完美解决Ubuntu下运行程序提示error while loading shared libraries
作者:hahaya
日期:
最近在学习Boost.Asio,历经波折终于编译成功最简单的程序,但是运行时却出现,提示找不到libboost_system.so.1.53.0这个动态链接库。历经波折终于弄好,故将过程记录在此。
最近在学习Boost.Asio,历经波折终于编译成功最简单的程序,但是运行时却出现如下错误,提示找不到libboost_system.so.1.53.0这个动态链接库:
最后无赖,只好求助于万能的网络,终于找到原因:Linux中与动态库连接的程序在运行时,需要将该动态库加载到内存中,Linux根据LD_LIBRARY_PATH查找动态库,默认的动态库文件目录为/usr/local/lib、/usr/lib。如果动态库没有位于默认目录中或环境变量设置错误,都会引起错误,提示为:error while loading shared libraries: libxxx.xxx: cannot open shared object file: No such file or directory
竟然知道了错误的原因,那么解决起来也容易多了,只需要将动态库所在目录加入LD_LIBRARY_PATH中即可。
(1) 打开当前用户的配置文件 vim ~/.profile
(2) 将动态库目录加入LD_LIBRARY_PATH中
(3) 保存.profile,然后执行source ~/.profile生效
(4) 重新运行程序,发现程序能成功运行
注意:有时候不知道程序需要哪些库,可以使用ldd命令查看程序运行需要哪些库。
作者:hahaya
出处:http://hahaya.github.com/linux-library-path
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
出处:http://hahaya.github.com/linux-library-path
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。