so文件查找路径
# 查看可执行文件的依赖库及其是否找到
- ldd execute_file
# so文件查找顺序
程序运行时,会按照以下顺序查找so文件。 https://blog.csdn.net/zhangzq86/article/details/80718559 (opens new window)
- RPATH ,编译链接时加入 -rpath 参数指明所谓的 RUNPATH ,这样可执行文件(或者依赖其他动态链接库的动态链接库)就能告诉 ld.so 到哪里去搜索对应的动态链接库了。
-Wl,-rpath=.
-Wl,-rpath=.:..
1
2
2
LD_LIBRARY_PATH ,对于没有设定 RPATH 的可执行文件或者动态链接库,我们可以用 LD_LIBRARY_PATH 这个环境变量通知 ld.so 往哪里查找链接库。
/etc/ld.so.conf ,系统对 ld.so 的路径配置文件。
/usr/lib 、 /lib 和 /usr/local/lib ,系统默认路径。
# 编译时cmake加入rpath信息
https://blog.csdn.net/zhangzq86/article/details/80718559 (opens new window)
set(CMAKE_BUILD_WITH_INSTALL_RPATH)
set(CMAKE_INSTALL_RPATH "./lib")
1
2
2
# 将.so文件路径的目录添加到/etc/ld.so.conf
参考https://www.cnblogs.com/xudong-bupt/p/3698294.html (opens new window)
- sudo vim /etc/ld.so.conf
文件末尾新添加一行,/home/liu/Desktop/jsoncpp-src-0.5.0/libs/linux-gcc-4.6
使得修改生效:
- sudo /sbin/ldconfig
# 临时添加查找路径$LD_LIBRARY_PATH
# 将/home/test添加到查找路径里:
$ export LD_LIBRARY_PATH=/home/test:$LD_LIBRARY_PATH
# 查看:
$ echo $LD_LIBRARY_PATH
1
2
3
4
5
2
3
4
5
编辑 (opens new window)
上次更新: 2023/05/07, 17:27:54