将共享库与其他共享库链接起来是否合适?

时间:2010-08-23 14:10:56

标签: c++ linux linker shared-libraries

我有一个使用共享库A,B和C的应用程序。共享库C也使用来自共享库A的一些符号。应用程序X在编译期间与A和B链接,并且在运行时执行dlopen以加载C时间。

我的问题是:

在链接时将C链接到A或者为运行时保留符号解析是一个好主意吗?

2 个答案:

答案 0 :(得分:2)

您的选择1.但它不会那样工作。

  1. 您将C链接到A.
    由于A是一个动态的lib,因此它不会有任何作用 它验证A在运行时是否满足所有依赖关系。

  2. 在运行时dlopen()共享库C
    它将打开C,如果你还没有链接到A,它也会打开A
    但由于A已经打开,它只会解析C中带有打开的A的符号。

答案 1 :(得分:0)

我会选择2.保留运行时的分辨率。后期绑定是最佳选择。我也从来不知道选项1是可能的:)