Linux依赖库路径(运行时)

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

[4]高级C/C++编译技术之读书笔记(四)之定位库文件

[5]为什么说LD_LIBRARY_PATH不好

[6]Shared Libraries: Understanding Dynamic Loading]

[7]Shared Library Search Paths

### 如何在Linux运行命令指定动态库路径 当需要在Linux环境中执行程序并希望该程序使用特定位置的共享库而非默认搜索路径中的库文件,可以采用多种方法来临或永久地修改动态链接器的行为。 #### 使用`LD_LIBRARY_PATH`环境变量 最简单的方式是在调用命令之前设置`LD_LIBRARY_PATH`环境变量。此变量告知加载器除了标准目录外还应在哪些地方寻找所需的.so文件[^3]。 ```bash export LD_LIBRARY_PATH=/path/to/custom/lib:$LD_LIBRARY_PATH ./your_program ``` 这种方式适用于一次性操作或是交互式的shell会话内;对于脚本来说,则可以在启动应用程序前加入上述两行指令。 #### 利用`ldconfig`配置缓存 如果打算让自定义库成为系统的一部分供多个应用访问,那么应该编辑 `/etc/ld.so.conf.d/*.conf` 文件并将新路径添加进去,之后通过 `sudo ldconfig` 更新全局缓存[^1]。这使得任何依赖这些库的应用都能自动找到它们而无需额外设定。 #### 命令行参数传递给解释器 某些情况下可以直接向可执行文件提供选项以改变其行为。例如,在编译阶段可以通过 `-rpath` 参数嵌入固定的查找地址到二进制里去。不过这种方法较为少见且灵活性较差。 为了确保使用的库路径符合 Linux Standard Base 目录结构的要求,建议优先考虑利用现有的标准化路径如 `/usr/local/lib`, `/opt/<package>/lib` 等作为存放第三方库的位置,并借助前述手段之一使能之。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OneSea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值