4
我知道鏈接到多個靜態庫或對象文件時,順序很重要(依賴庫應該在其依賴關係之前列出)。我想知道,如果在創建一個帶有ar
的庫文件時,這個規則適用,並且庫中的順序很重要,或者在同一個.a
文件中,它沒有什麼區別。
我打包200個多對象文件以及複雜的依賴關係圖,並做靜態庫中目標文件的順序
ar rcs mylib.a objs/*.o
是相當容易然後按照正確的順序列出。如果它有所不同,我使用gcc
。
我知道鏈接到多個靜態庫或對象文件時,順序很重要(依賴庫應該在其依賴關係之前列出)。我想知道,如果在創建一個帶有ar
的庫文件時,這個規則適用,並且庫中的順序很重要,或者在同一個.a
文件中,它沒有什麼區別。
我打包200個多對象文件以及複雜的依賴關係圖,並做靜態庫中目標文件的順序
ar rcs mylib.a objs/*.o
是相當容易然後按照正確的順序列出。如果它有所不同,我使用gcc
。
庫內的訂單使用很長時間以前。
對於任何比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
(包含上述指數)時自動建立檔案庫,或在鏈接時在內存中建立它。
*「庫中的順序很久以前用於......」* - 由於C++靜態對象初始化順序,這不一定是真實的。 – jww 2015-09-22 00:41:57