2011-12-29 47 views
4

我知道鏈接到多個靜態庫或對象文件時,順序很重要(依賴庫應該在其依賴關係之前列出)。我想知道,如果在創建一個帶有ar的庫文件時,這個規則適用,並且庫中的順序很重要,或者在同一個.a文件中,它沒有什麼區別。
我打包200個多對象文件以及複雜的依賴關係圖,並做靜態庫中目標文件的順序

ar rcs mylib.a objs/*.o 

是相當容易然後按照正確的順序列出。如果它有所不同,我使用gcc

回答

6

庫內的訂單使用很長時間以前。

對於任何比15 - 20年更新的UNIX系統,它不再重要。從man ranlib

An archive with such an index speeds up linking to the library 
    and allows routines in the library to call each other without 
    regard to their placement in the archive. 

大多數非古UNIX系統或者生產__.SYMDEF(包含上述指數)時自動建立檔案庫,或在鏈接時在內存中建立它。

+0

*「庫中的順序很久以前用於......」* - 由於C++靜態對象初始化順序,這不一定是真實的。 – jww 2015-09-22 00:41:57

相關問題