LD_LIBRARY_PATH指定运行时动态库搜索路径,适合临时解决库路径问题,但不推荐生产环境使用。
核心定义
动态链接器查找共享库(.so 文件)的目录列表,优先级高于系统缓存和默认目录。
使用方法
临时设置:
export LD_LIBRARY_PATH=/opt/mylib/lib:$LD_LIBRARY_PATH
./my_program单次运行:
LD_LIBRARY_PATH=/opt/mylib/lib ./my_program适用场景
- 使用非标准路径的库
- 测试新版本库
- 无 root 权限安装
搜索优先级
DT_RPATH(编译时写入)LD_LIBRARY_PATHDT_RUNPATH/etc/ld.so.cache- 默认目录(
/lib、/usr/lib)
风险
- 可能导致版本冲突
- 安全风险(恶意库劫持)
- 不利于维护
替代方案
使用 ldconfig:
echo "/opt/mylib/lib" | sudo tee /etc/ld.so.conf.d/mylib.conf
sudo ldconfig编译时设置 RPATH:
gcc -Wl,-rpath,/opt/mylib -o my_program my_program.c -L/opt/mylib -lmylib包装脚本:
#!/bin/bash
export LD_LIBRARY_PATH=/opt/mylib/lib
exec /opt/mylib/bin/my_program "$@"