链接编译时链接到另一个库的库

时间:2013-08-29 10:02:29

标签: c++ c unix dynamic hyperlink

我有一个binary1,它是一个链接到另一个library1.so的编译时间 为了添加一些功能,我创建了lib2.so,它使用了libas_sdk.so。

library2.so中的功能只有在dlopen(libas_sdk.so)成功时才有效,否则它会正常返回并执行其他工作。

现在library1.so必须使用library2.so(如果需要)并使用新功能。

我尝试了多个编译和链接选项,但是获得了ldd或未解决的符号错误。

请建议。

1 个答案:

答案 0 :(得分:0)

如果已经链接了lib,那么

dlopen()将返回成功。

因为library1.so必须使用library2.so,所以需要将它们都链接到binary1。 (-llibrary1 -llibrary2)

从您的问题看来,lib2._sdk.so运行时中的library2.so链接。它可能在您使用某些配置数据调用其某些init_library2()或某些函数时发生。

我认为问题不在于您的链接,而在于您的二进制1。这个library2(或library1)的初始化是你做得太早或太晚的事情。恕我直言你的binary1应该与一个简单的-llibrary1 -llibrary2链接。