Linux 上有没有办法让共享库动态选择如何链接到其依赖项?

问题描述 投票:0回答:1

情况: 有一个库

A
依赖于库
B
。然而,
B
通常是由系统提供的,并且某些可能想要与
A
链接的程序可能取决于系统提供的库。

A
依赖于
B
的特定版本,因此与其捆绑在一起,但由于
B
提供的兼容性保证,任何较新版本的
B
都应该可以正常工作。

问题:

假设有一种方法可以确定哪个是“较新”的,

A
是否可以动态选择它所链接的
B
(系统提供的一个或捆绑的一个)?

请注意,理想情况下,它应该对

A
的“消费者”尽可能透明,即他们不应该尝试预加载
B
本身的适当版本并仅与
A
链接。另外
A
使用
B
中的符号来初始化它自己的全局变量。

即我想要有效实现的是动态链接器,当它加载库

A
并尝试满足其依赖关系时,选择较新的(捆绑
B
|系统
B
)(如果两者都存在)。

linux linker shared-libraries
1个回答
0
投票

如果在程序启动时,环境 变量

LD_LIBRARY_PATH
被定义为包含冒号- 分隔的目录列表,然后搜索这些目录。

检查

dlopen
ldd
手册页。

© www.soinside.com 2019 - 2024. All rights reserved.