優化刪除GCC 和ld 建置中未使用的符號
建置執行檔時,尤其是基於ARM 的嵌入式系統,優化可執行檔大小是對於提高效能至關重要。一個值得注意的問題是二進位檔案中存在未使用的符號,導致不必要的膨脹。
為了緩解GCC 和ld 環境中的這個問題,採用了一種兩階段方法:
第一階段:分離程式碼段
使用編譯器標誌-fdata-sections 和-ffunction-sections指示編譯器將每個翻譯單元內的程式碼分割為表示函數、類別和外部變數的不同部分。這可以隔離未使用的符號。
階段2:丟棄未引用的節
在連結階段,使用最佳化標誌-Wl,--gc 呼叫連結器-sections 觸發器丟棄缺少引用的節。這可確保從最終的可執行檔中排除未使用的符號。
例如,考慮一個檔案test.cpp 具有兩個函數,其中一個未使用,以下命令將產生一個省略未使用函數的可執行檔:
透過採用這種兩階段方法,可以有效地刪除未使用的符號,從而顯著減少最終可執行檔案的大小,從而增強資源受限的嵌入式中的載入效能係統。
以上是我們如何優化 GCC 和 ld 建置以刪除未使用的符號並減少可執行檔的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!