2013-04-10 133 views
4

所以我有,說,libA.a libB.a libC.a libD.so和一些代碼鏈接到libPack.a。稍後,我將創建將鏈接到libPack.a的libFinal.so,並且最終將libFinal.so用於可執行文件。將第三方靜態庫與cmake組合成一個獨立靜態庫?

當鏈接器創建靜態庫時,我相信每個動態庫都會在編譯時被解析幷包含在靜態庫中。它是否也適用於(-fPIC)第三方靜態庫?

如何將一堆靜態庫和共享庫合併爲一個使用CMake的獨立的大型獨立庫libFinal.so庫?如果這是不可能的,是否意味着我必須爲客戶提供所有的lib依賴關係?

我設法得到可執行文件與沒有依賴關係的虛擬庫(沒有libA...D)一起工作,但是當我使用鏈接到libA..D的libPack.a時,我得到第三方庫的未定義符號。我的猜測是靜態庫不在libPack.a之內,但我不確定發生了什麼。

+0

靜態庫沒有鏈接,將其視爲對象文件的「zip」。鏈接只發生在可執行文件和共享庫上。 – 2013-04-10 17:44:45

+0

我認爲*未定義符號*來自系統中的'libD.so'或其他第三方庫 – bikram990 2013-05-09 12:07:26

回答