ubuntu下cpp项目,编译后运行,提示so包找不到的处理方式
方法01,修改LD_LIBRARY_PATH
子依赖so包找不到
比如找不到a.so,但find方式的确加入link_directories所包含路径中了。
就ldd a.so
如果a.so缺少其他包,说明a可能找到了,但是由于本身不完整,所以被忽略了。表面提示:not found so,真实mesg其实是find a bad so
此时:解决a.so依赖的为何没有就行了。
有可能出现问题:
在路径:/zz/下ldd path_to_a/a.so,存在几个so,not found
在路径path_to_a/:ldd a.so ,so都能找到
原因:将path_to_a/添加到export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH;/path_to_a/“
这个类似编译时环境和运行时环境,运行时环境搜索so包,会从LD_LIBRARY_PATH检索。
方法02,修改ld.so.conf
如果使用自己手动生成的动态链接库.so文件,但是这个.so文件,没有加入库文件搜索路径中,程序运行时可能会出现找不到动态链接库的情形。
解决:
编辑:/etc/ld.so.conf。文件末尾新添(举例):/home/liu/Desktop/jsoncpp-src-0.5.0/libs/linux-gcc-4.6
使得修改生效:sudo /sbin/ldconfig
参考
linux找不到动态链接库 .so文件的解决方法:https://www.cnblogs.com/xudong-bupt/p/3698294.html
解决Linux下找不到.so库文件的问题:https://blog.csdn.net/csdlwzy/article/details/84566401