linux 編譯strip減小程式大小

2021-07-02 05:49:31 字數 1713 閱讀 9826

strip 命令

用途 通過除去繫結程式和符號除錯程式使用的資訊,減少擴充套件公共物件檔案格式(xcoff)的物件檔案的大小。

語法 strip [ -v] [ -r [ -l ] | -x [ -l ] | -t | -h | -e | -e ] [ -x ] [ – ] file …

描述 strip 命令減少 xcoff 物件檔案的大小。strip 命令從 xcoff 物件檔案中有選擇地除去行號資訊、重定位資訊、除錯段、typchk 段、注釋段、檔案頭以及所有或部分符號表。 一旦您使用該命令,則很難除錯檔案的符號;因此,通常應該只在已經除錯和測試過的生成模組上使用 strip 命令。使用 strip 命令減少物件檔案所需的儲存量開銷。

對於每個物件模組,strip 命令除去給出的選項所指定的資訊。對於每個歸檔檔案,strip 命令從歸檔中除去全域性符號表。

可以使用 ar -s 命令將除去的符號表恢復到歸檔檔案或庫檔案中。

沒有選項的 strip 命令除去行號資訊、重定位資訊、符號表、除錯段、typchk 段和注釋段。

標誌 -e 在物件檔案的可選頭中設定 f_loadonly 標誌。如果物件檔案放置在歸檔中,則該標誌告知繫結程式(ld 命令),在與此歸檔鏈結時應忽略該物件檔案中的符號。

-e 復位(關閉)物件檔案的可選頭中的 f_loadonly 位。(請參閱 -e 標誌。)

-h 除去物件檔案頭、任何可選的頭以及所有段的頭部分。

注:不除去符號表資訊。

-l (小寫 l)從物件檔案中除去行號資訊。

-r 除了外部符號和靜態符號條目,將全部符號表資訊除去。不除去重定位資訊。同時除去除錯段和 typchk 段。這個選項產生乙個物件檔案,該物件檔案仍可以用作輸入到鏈結編輯器(ld 命令)中。

-t 除去大多數符號表資訊,但並不除去函式符號或行號資訊。

-v 列印 strip 命令的版本號。

-x 除去符號表資訊,但並不除去靜態或外部符號資訊。 -x 標誌同時除去重定位資訊,因此將不可能鏈結到該檔案。

-x mode 指定應檢查 strip 的物件檔案的型別。 mode 必須是下列之一:

32 只處理 32 位物件檔案

64 只處理 64 位物件檔案

32_64

既處理 32 位物件檔案,又處理 64 位物件檔案

預設值是處理 32 位物件檔案(忽略 64 位物件檔案)。也可以用 object_mode 環境變數來設定 mode。例如,object_mode=64 使 strip 處理任何 64 位物件檔案,並忽略 32 位物件檔案。-x 標誌重設 object_mode 變數。

– (雙連字元)將跟隨在該標誌後的所有引數解釋為檔名。這就允許除去名稱是以連字元開始的檔案。

退出狀態

該命令返回以下退出值:

0 成功完成。

0 出錯。

示例

要除去 a.out 檔案中的符號表和行號資訊,請輸入:

strip a.out要除去 a.out 檔案中的物件檔案頭,請輸入:

strip -h a.out要除去 lib.a 中的 32 位和 64 位符號表,請輸入:

strip -x 32_64 lib.a檔案

/usr/ccs/bin/strip 包含 strip 命令。

相關資訊

ar 命令、as 命令、dump 命令、ld 命令、size 命令。

ar 檔案、a.out 檔案。

linux 減小根分割槽大小 減小linux下根分割槽

減小linux下根分割槽 2011 02 25 xingfuxiaozi 減小linux 根分割槽 紅帽企業版linux安裝程式預設的分割槽結構是,劃分 boot 分割槽和 swap 分割槽,然後將剩下的空間分給乙個邏輯卷,並且使用該邏輯卷 作為根 分割槽。將所有的資料檔案和系統檔案都存放在乙個系統...

linux gcc 靜態編譯 減小體積

眾所周知,gcc編譯的原始程式一般很大,其實有幾種方法能大大減小目標 的體積,一般有以下幾種方法。1 禁用除錯資訊 release編譯時不要加上 g開關。2 使用 os編譯程式。不要使用 funroll loops等可以加速程式執行但是會大大增加目標 體積的開關。3 編譯後的程式使用strip去除符...

Linux編譯時如何減小so庫檔案的大小

今天問了我這個問題,我就順便記錄一下。客戶問為什麼libc.so檔案再編譯前和編譯後的size不一樣啊,staging 和 compile 兩個dir下的 libc.so大小不一樣,具體有什麼區別嗎?這是是因為編譯的時候還會用strip工具來處理庫檔案,把二進位制檔案中的包含的符號表和除錯資訊刪除掉...