假设我有一个库libfoo.so.1,它(根据ldd)依赖于libbar.so.1. 但是,libbar.so.1目前不可用。我的应用程序需要调用一个libfoo.so.1根本不需要的函数libbar.so.1。
有没有办法加载libfoo.so.1、解析函数符号然后调用它而不必libbar.so.1满足依赖关系?这是一个“我知道我在做什么,让我已经做”的案例。我尝试了 RTLD_LAZY 标志,但它仍然尝试在不加载符号libbar.so.1之前加载库。
编辑
这是确切的情况。
我们有3名球员:
libbar.so.1, 位于不在LD_LIBRARY_PATHor中的路径中的共享库ldconfig,并且其依赖关系都已解决libfoo.so.1,一个共享库,位于与 不同的目录中libbar,但取决于libbar. 在运行时,libfoo会知道在哪里定位libbar.App,一个二进制应用程序,需要libfoo在运行时的某个时间点加载。
App不知道在哪里可以找到libbar,但知道libfoo知道。我想要完成的是拥有一个 init 函数,libfoo其中只需将App' 的当前工作目录更改libbar为最终解决所有依赖项并使每个人都开心的位置。
libfoo最终需要调用 in 的东西,libbar而不是在这个 init 函数中。我不认为创建存根会起作用,因为符号最终需要解析为实际功能。