0 前言
《Linux依赖库路径(编译时)》介绍了编译时如何指定依赖库路径,本文重点介绍运行时如何指定依拉库路径。
1 LD_LIBRARY_PATH
可通过该环境变量指定依赖库路径:
export LD_LIBRARY_PATH=<新增依赖库路径>:$LD_LIBRARY_PATH
注:通过该环境变量指定库路径是有弊端的[5], 因此Ubuntu这样发行版默认没有用它。虽然如此,但用于调试还是很有用的。
2 LD_RUN_PATH
类似于LD_LIBRARY_PATH,只是它还可以用于编译时[3]。
3 ld.so.conf
默认配置如下:
include /etc/ld.so.conf.d/*.conf
# @file: /etc/ld.so.conf
/etc/ld.so.conf.d中包含若干配置文件,例如:
Multiarch support
/usr/local/lib/x86_64-linux-gnu
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
# @file: /etc/ld.so.conf.d/x86_64-linux-gnu.conf
此外,还可以往“/etc/ld.so.conf.d”中添加配置,例如:
/usr/local/lib
# @file: /etc/ld.so.conf.d/opencv.conf
更新使其生效:
sudo ldconfig
4 LD_PRELOAD
可通过该环境变量指定需要预先加载的库[4]:
export LD_PRELOAD=/xxx/yyy/libTest.so:$LD_PRELOAD
参考资料
[1]LD_LIBRARY_PATH(百度百科)
[2]Linux下so动态库查看与运行时搜索路径的设置--掌握这个就够了
[3]LD_RUN_PATH && LD_LIBRARY_PATH