我有一个包含四个共享库的可执行文件,依赖关系树如下所示: Executable app does a dlopen of foo.so
and bar.so
. foo.so
依次链接到fooHelper.so
和bar.so
链接到barHelper.so
。
现在,问题是fooHelper.so
和barHelper.so
有一些相同的符号。例如,假设我们在和func
中有不同的实现。有没有办法强制使用' 的实现和使用's?目前发生的情况是,根据帮助程序的链接顺序,只有一个实现被和使用。这是因为默认的 Unix 链接模型,如果符号的定义已经加载,那么随后加载的共享库中的任何其他定义都将被丢弃。基本上,fooHelper.so
barHelper.so
foo.so
fooHelper.so
bar.so
barHelper.so
func
foo.so
bar.so
func
将从首先链接的帮助程序库中获取。我需要一种方法来显式指定适当的映射,而无需更改共享库的源代码。
我正在使用 g++ 4.4 在 Linux 上工作。