如何加载共享库而不加载它的依赖项?
说我有一个库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中的路径中的共享库,并且其依赖关系都已解析 应用程序不知道在哪里找到libbar,但知道libfoo知道.我想要完成的是在libfoo中有一个init函数,它只是将App的当前工作目录更改到libbar所在的目录,以最终解决所有的依赖关系,并使大家开心. libfoo最终将需要在libbar中调用东西,而不是在这个init函数中.我不认为创建一个存根将工作,因为符号最终将需要解决到真正的功能.
那么,即使使用RTLD_LAZY,变量仍然解决,所以一般来说,你需要所有的库被链接.好像你应该创建一个没有功能的存根libbar.so.1,可以通过链接器找到.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |