说我有一个库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_PATH或ldconfig中的路径中的共享库,并且其依赖关系都已解析
> libfoo.so.1,一个共享库位于与libbar不同的目录,但依赖于libbar.在运行时,libfoo会知道在哪里找到libbar.
> App,一个二进制应用程序,需要在运行时的某个时候加载libfoo.
应用程序不知道在哪里找到libbar,但知道libfoo知道.我想要完成的是在libfoo中有一个init函数,它只是将App的当前工作目录更改到libbar所在的目录,以最终解决所有的依赖关系,并使大家开心.
libfoo最终将需要在libbar中调用东西,而不是在这个init函数中.我不认为创建一个存根将工作,因为符号最终将需要解决到真正的功能.