2010-08-23 197 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是可能的:)