我有一个使用两个共享库的进程A : libA.so和libB.so。因为这两个库是由不同的人编写的。不幸的是libA.so使用 3rd 方库libD.so的 1.0 版。而libB.so以静态形式libD.a使用库的 2.0 版。我知道如果libA.so和libA.so使用libD.so,由于Global Symbol Interpose可能会发生一些错误。但是这种情况是不是也有同样的问题呢?
我知道可以在libA.so或libB.so上使用链接标志 -Bsymbolic来强制符号首先使用库解析符号。为了使进程A正确运行,两个库都必须与此标志链接,对吗?但是,我没有libA.so的源代码。所以我不能再次重新链接libA.so。
更一般地说,如果一个进程使用两个 3rd 方库,其中包含另一个相同的 3rd 方库。会不会发生同样的事情?我能做些什么来解决这个问题吗?