cpp_linux下cpp之so包找不到问题

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

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×