我有一个使用共享库A,B和C的应用程序。共享库C也使用来自共享库A的一些符号。应用程序X在编译期间与A和B链接,并且在运行时执行dlopen以加载C时间。
我的问题是:
在链接时将C链接到A或者为运行时保留符号解析是一个好主意吗?
答案 0 :(得分:2)
您的选择1.但它不会那样工作。
您将C链接到A.
由于A是一个动态的lib,因此它不会有任何作用
它验证A在运行时是否满足所有依赖关系。
在运行时dlopen()共享库C
它将打开C,如果你还没有链接到A,它也会打开A
但由于A已经打开,它只会解析C中带有打开的A的符号。
答案 1 :(得分:0)
我会选择2.保留运行时的分辨率。后期绑定是最佳选择。我也从来不知道选项1是可能的:)