2010-08-23 146 views
0

我有一个使用共享库A,B和C的应用程序X.共享库C还使用共享库A中的一些符号。应用程序X在编译期间与A和B链接,并且在运行时加载C 。将共享库与其他共享库链接是否好?

我的问题是:

这是个好主意,在链接时对一个链接C或离开运行系统的符号解析?

+0

我不知道你能^^ – 2010-08-23 14:18:33

回答

2

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

  1. 您与A路段C
    。因为A是一个动态的LIB这将无能为力phsically。
    它验证A会在运行时满足所有依赖关系。

  2. 在当你dlopen的运行时()共享库Ç
    这将打开C和,如果你不是已经对链接的同时,也会打开
    但由于A已经打开它只是解决符号C与A开放。

+2

如果应用程序和库C都与库A的不同主要版本然后两个主要版本将被装载和他们的符号将混合有可能是一个问题,除非有符号版本。 – 2010-08-23 14:54:16

+0

是的。但这是一个单独的问题。让我们试着把重点放在手头的问题上(在这种情况下,这不是问题)。如果我们想要进入版本控制,那么OP应该发布关于它的特定问题。 – 2010-08-23 16:24:43

0

我会选择2.保留运行时的分辨率。迟绑定是最好的选择。此外,我从来不知道选项1是可能的:)