ld
documentation說後,猛烈減小尺寸使用--whole - 歸檔ld的選項
--whole - 歸檔
對於 後在命令行上提及的每個歸檔--whole-歸檔選項,請在鏈接中的歸檔中包含每個對象文件,而不是在歸檔中搜索所需的對象 文件。這通常用於打開的存檔文件到一個共享庫 ,迫使每個要被包括在所產生的共享 庫對象。該選項可能會多次使用。
我已經寫了一個玩具程序,並將其與GNU gmp
庫(libgmp.a
)靜態鏈接。令人驚訝的是libgmp.a
大小1.2 MB
而生成的可執行的是526 KB
。使用ar -x
提取.a
存檔將生成457
目標文件。根據文件記載,如果所有這些鏈接都與鏈接無關,那麼鏈接後大小如何減少?有沒有什麼辦法可以確認所有的目標文件是否已經鏈接到可執行文件中?
沒錯,這是唯一可行的解釋我能想到的。 –