首頁 > 後端開發 > C++ > 如何使用 GCC 和 ld 從 C/C 執行檔中刪除未使用的符號?

如何使用 GCC 和 ld 從 C/C 執行檔中刪除未使用的符號?

DDD
發布: 2024-12-28 07:55:14
原創
706 人瀏覽過

How to Strip Unused Symbols from C/C   Executables with GCC and ld?

如何使用GCC 和ld 消除C/C 可執行檔中未使用的符號

簡介

優化可執行檔大小在嵌入式系統或資源中至關重要- 環境受限。為了實現這一點,從可執行檔中刪除未使用的符號非常重要。

GCC 和 ld 符號剝離

GCC 和 ld 提供了在編譯和連結期間丟棄未使用符號的選項:

海灣合作委員會選項

  • -fdata-sections:將程式碼和資料分成每個翻譯單元中的不同部分。
  • -ffunction-sections:將函數拆分為單獨的部分。

ld選項

  • -Wl,--gc-sections:指示ld丟棄未引用的部分。

實作

刪除未使用的符號,請依照下列步驟操作:

  1. 編譯使用-fdata-sections 和-ffunction-sections 標誌的GCC 原始檔。
  2. 使用 ld 和 -Wl,--gc-sections 標誌將目標檔案連結在一起。

範例

假設我們有一個檔案test.cpp 有兩個函數,其中之一是未使用:

int use(int a);
int unused(int a);
登入後複製

要刪除未使用的函數,請如下編譯和連結:

gcc -Os -fdata-sections -ffunction-sections test.cpp -o test -Wl,--gc-sections
登入後複製

此指令將指示GCC將程式碼和資料分成多個部分,並指示 ld 丟棄未引用的部分,導致可執行檔的大小減少。

以上是如何使用 GCC 和 ld 從 C/C 執行檔中刪除未使用的符號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板