首頁 >後端開發 >C++ >我們如何優化 GCC 和 ld 建置以刪除未使用的符號並減少可執行檔的大小?

我們如何優化 GCC 和 ld 建置以刪除未使用的符號並減少可執行檔的大小?

Susan Sarandon
Susan Sarandon原創
2024-12-17 09:33:25762瀏覽

How Can We Optimize GCC and ld Builds to Remove Unused Symbols and Reduce Executable Size?

優化刪除GCC 和ld 建置中未使用的符號

建置執行檔時,尤其是基於ARM 的嵌入式系統,優化可執行檔大小是對於提高效能至關重要。一個值得注意的問題是二進位檔案中存在未使用的符號,導致不必要的膨脹。

為了緩解GCC 和ld 環境中的這個問題,採用了一種兩階段方法:

第一階段:分離程式碼段

使用編譯器標誌-fdata-sections 和-ffunction-sections指示編譯器將每個翻譯單元內的程式碼分割為表示函數、類別和外部變數的不同部分。這可以隔離未使用的符號。

階段2:丟棄未引用的節

在連結階段,使用最佳化標誌-Wl,--gc 呼叫連結器-sections 觸發器丟棄缺少引用的節。這可確保從最終的可執行檔中排除未使用的符號。

例如,考慮一個檔案test.cpp 具有兩個函數,其中一個未使用,以下命令將產生一個省略未使用函數的可執行檔:

透過採用這種兩階段方法,可以有效地刪除未使用的符號,從而顯著減少最終可執行檔案的大小,從而增強資源受限的嵌入式中的載入效能係統。

以上是我們如何優化 GCC 和 ld 建置以刪除未使用的符號並減少可執行檔的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn