[程式]

/usr/bin/strip

[Shared Library]

/usr/lib/libbfd-2.9.5.0.16.so
/lib/libdl.so.2
/lib/libc.so.6
/lib/ld-linux.so.2

[語法]

中括號表示括號內是可選的
strip [-F 目的檔(Object file)格式名 | --target=目的檔格式名稱]

[-I 目的檔格式名稱 | --input-target=目的檔格式名稱] [-O 目的檔格式名稱 | --output-target=目的檔格式名稱] [-R 欲刪除的區段(section)名稱 | --remove-section=欲刪除的區段名稱] [-s | --strip-all]
[-S | -g | --strip-debug]
[--strip-unneeded]
[-x | --discard-all]
[-X | --discard-locals]
[-K 欲保留的特定符號 | --keep-symbol=欲保留的特定符號] [-N 欲刪除的特定符號 | --strip-symbol=欲刪除的特定符號] [-o 其他的輸出檔名]
[-p | --preserve-dates]
[-v | --verbose]
[-V | --version]
[-V | --help]
目的檔(object file)或可執行檔..

[用途說明]

strip這個程式主要功能就是去掉執行檔或者是object file中的除錯符號資訊. 因為除錯資訊對執行檔是否正確執行並沒有關係, 所以可用來節省執行檔或library所佔用的磁碟空間.

最簡單的用法就是將欲刪除符號表的執行檔當作參數. 更動後的執行檔(或者是object file)預設會覆蓋 在本來的檔案之上. 不過使用者亦可藉由給定-o選項指定改動後的檔案要放置的路徑 (而非覆寫在原本的檔案之上)

而給定--remove-section選項亦可做到刪除特定section的功能.

[選項的細節]

-F 目的檔格式名
--target=目的檔格式

將目的檔以指定的格式來讀入, 並以相同的格式輸出

--help
簡單顯示strip的選項與說明之後就離開
-I 目的檔格式
--input-target=目的檔格式
將目的檔以指定的格式讀入
-O 目的檔格式


--output-target=目的檔格式

將去除符號資訊的目的檔以指定的格式輸出

-R 區段名稱
--remove-section=區段名稱

將目的檔中特定的區段去除

-s
--strip-all

將所有的符號資訊去除. 這些符號資訊除了除錯的資訊以外也包括重定位資訊(relocation information), 去除這些資訊可能會讓這個目的檔無法連結到其他的目的檔或者是無法製作成共享程式庫(Shared Library).

-g
-S
--strip-debug

僅去除除錯用的符號資訊.

--strip-unneeded

去除所有在重定位過程中不需要的符號資訊

-K 符號名
--keep-symbol=符號名

僅保留指定的符號資訊, 其他的全部去除.(這個選項可以重複出現, 以指定數個想保留的符號)

-N 符號名
--strip-symbol=符號名

僅去除指定的符號資訊, 其他的全部保留.(這個選項可以重複出現, 以刪除數個想保留的符號).

-o 輸出檔案名稱

將輸出目的檔指定到其他的檔案. 當-o選項使用時, 指定多於一個輸入的目的檔並不合法.

-p
--preserve-dates

保留目的檔的atime與mtime資訊.

-x
--discard-all

將所有非global的符號資訊去除.(但不影響重定位的運作)

-X
--discard-local

將所有由編譯器產生的區域性符號(local symbols)資訊去除.(這些符號通常名字的開 頭是L或者是.) 可以用nm觀察得知.

-V
--version

印出strip的版本資訊.

-v
--verbose

印出所有修改過的目的檔名稱. 如果輸入時指定的檔案是一整個程式庫, 那麼strip就會修改並印出 這個程式庫裡包含的所有目的檔名稱.

[其他資訊]

可以使用nm或者是objdump(objdump -t 目的檔名)這兩個程式來� [察strip之前與之後相關的符號訊息.