赞
踩
目录
解决链接不到动态库(error while loading shared libraries: lib.so)
我们的源码编译为可执行文件时,链接器链接动态库需要到我们指定的动态库路径下查找动态库。编译完成后对于可执行文件是如何链接动态库的,其实际的先后搜索顺序如下所示:
- 编译源代码指定的动态库路径;
- 环境变量LD_LIBRARY_PATH指定的动态库路径;
- /etc/ld.so.conf指定的动态库路径;
- 默认的动态库路径/lib和/usr/lib;
首先这里介绍如何查看当前可执行程序链接到的动态库:
- # linux
- ldd ./your_exe
- # mac
- otool -L ./your exe
基于动态库的搜索原则也对应存在不同的方式解决,首先查找动态库实际路径:
sudo find / -type f -name "*your_target.so*"
1、将动态库拷贝至编译源代码指定的动态库路径;
2、指定环境变量
export LD_LIBRARY_PATH=/your/lib/dir/:$LD_LIBRARY_PATH
3、将动态库链接追加至配置文件最后
- # 将动态库实际路径追加至文件最后保存退出
- sudo vim /etc/ld.so.conf
- # 运行ldconfig
- ldconfig
4、将动态库拷贝至默认的动态库路径/lib和/usr/lib;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。