用途
通過除去綁定程式和符號偵錯工具使用的資訊,減少擴充公用對象檔案格式(XCOFF)的對象檔案的大小。
文法
strip [ -V ] [ -r [ -l ]
| -x [ -l ]
| -t | -H | -e | -E ]
[ -X {32 |64 |32_64 }] [ -- ] 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 變數。 |
| -- |
(雙連字號)將跟隨在該標誌後的所有參數解釋為檔案名稱。這就允許除去名稱是以連字號開始的檔案。 |
退出狀態
該命令返回以下退出值:
樣本
- 要除去 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 命令。 |
==================================================================================
UNIX下執行檔案的減肥工具 strip
-
UNIX下檔案壓縮命令compress大家都比較熟悉了,它的壓縮率比較高, 和tar命令結合使用來做資料備份是最合適不過了。但compress壓縮也有缺點,就是被壓縮後的檔案需要用命令uncompress解壓後才能正常使用。而用strip命令就沒有這個問題,它能清除執行檔案中不必要的標示符及調試資訊,可減小檔案大小而不影響正常使用。但與compress 不同的是,檔案一旦strip後就不能恢複原樣了,所以strip是一個減肥工具而不是壓縮公用程式。而且,被strip後的檔案不包含調試資訊,就不能用 dbx來偵錯工具了。現在讓我們來具體效果如何,看下面一個程式:
#include
main()
{
printf("hello, world/n");
}
用cc編譯以後長度為46176位元組,用strip後變為了 30648,足足減小了 1/3,而且仍然可以正常執行。除了用strip外,用共用庫也是減小執行檔案長度的方法。
註:
1.如果檔案大小沒有減小,那就是已經strip過了.
2.cc 編譯時間加上"-s"參數,具有同樣的作用。
某種節約空間的辦法:
那就是對於單個比較大的可執行檔可以編寫一個zexec指令碼.下面的指令碼只是針對/usr/bin/cc的
uncompress ./cc.Z
mv cc /tmp
cd /tmp
./cc