相关疑难解决方法(0)

将两个共享库与一些相同的符号链接在一起

我链接两个不同的共享库.两个库都定义了一些共享名称但具有不同实现的符号.我不能让每个库使用自己的实现而不是另一个.

例如,两个库都定义了一个bar()内部调用的全局函数.库1调用它foo1(),库2调用它foo2().

Lib1.so:

T bar
T foo1()     // calls bar()
Run Code Online (Sandbox Code Playgroud)

Lib2.so:

T bar
T foo2()     // calls bar()
Run Code Online (Sandbox Code Playgroud)

如果我将我的应用程序链接到Lib1.so然后链接到Lib2.so即使在调用时也会调用Lib1.so中的bar实现foo2().另一方面,如果我将我的应用程序链接到Lib2.so然后链接到Lib1.so,则始终从Lib2.so调用bar.

有没有办法让库总是更喜欢自己的实现高于任何其他库?

c unix gcc shared-libraries dynamic-linking

44
推荐指数
2
解决办法
2万
查看次数

标签 统计

c ×1

dynamic-linking ×1

gcc ×1

shared-libraries ×1

unix ×1