【发布时间】:2011-09-26 04:19:23
【问题描述】:
我链接了两个不同的共享库。这两个库都定义了一些共享名称但具有不同实现的符号。我不能让每个库都使用自己的实现。
例如,两个库都定义了一个全局函数bar(),每个函数都在内部调用。库一从foo1() 调用它,库二从foo2() 调用它。
Lib1.so:
T bar
T foo1() // calls bar()
Lib2.so:
T bar
T foo2() // calls bar()
如果我将我的应用程序与 Lib1.so 和 Lib2.so 链接,则即使在调用 foo2() 时也会调用来自 Lib1.so 的 bar 实现。另一方面,如果我将我的应用程序与 Lib2.so 和 Lib1.so 链接,则始终从 Lib2.so 调用 bar。
有没有办法让一个库总是比任何其他库更喜欢它自己的实现?
【问题讨论】:
标签: c unix gcc shared-libraries dynamic-linking