我有一个binary1,它是一个链接到另一个library1.so的编译时间 为了添加一些功能,我创建了lib2.so,它使用了libas_sdk.so。
library2.so中的功能只有在dlopen(libas_sdk.so)成功时才有效,否则它会正常返回并执行其他工作。
现在library1.so必须使用library2.so(如果需要)并使用新功能。
我尝试了多个编译和链接选项,但是获得了ldd或未解决的符号错误。
请建议。
答案 0 :(得分:0)
dlopen()将返回成功。
因为library1.so必须使用library2.so,所以需要将它们都链接到binary1。 (-llibrary1 -llibrary2)
从您的问题看来,lib2._sdk.so运行时中的library2.so链接。它可能在您使用某些配置数据调用其某些init_library2()或某些函数时发生。
我认为问题不在于您的链接,而在于您的二进制1。这个library2(或library1)的初始化是你做得太早或太晚的事情。恕我直言你的binary1应该与一个简单的-llibrary1 -llibrary2链接。