strip

删除目标文件中的标识符


语法格式

strip [-dgpsSvwxX] [-F bfdname] [--info] [-I bfdname] [-K symbol]
[--keep-file-symbols] [-N symbol] [-o file] [-O bfdname]
[--only-keep-debug] [-R section] objfiles
strip [--help] [--info] [-V|--version]

命令简介

strip命令用于删除指定目标文件中的所有标识符。其中,objfile是一个或一组目标文件,也可以是档案文件。在运行strip命令时,至少必须给定一个文件参数。

除非使用“-o”选项另有指定,strip命令通常是在修改给定的目标文件之后,再以修改后的结果替换给定目标文件的初始内容,而不是把修改后的处理结果写到不同名字的文件中。

命令选项

-F bfdname, --target=bfdname  按照指定的目标代码格式bfdname,处理命令行文件参数指定的初始目标文件objfile,最后以相同的格式重写objfile文件。可用的目标代码格式是elf32-i386和elf64-x86-64等,参见“--info”选项的输出。

-I bfdname, --input-target=bfdname  按照指定的目标代码格式bfdname,处理命令行文件参数指定的初始目标文件objfile

-K symbol, --keep-symbol=symbol  在删除标识符时,保留指定的标识符symbol,即使在常规情况下应当删除这个标识符也是如此。这个选项可以重复指定多次。

-N symbol, --strip-symbol=symbol  从源代码文件中删除指定的标识符symbol。这个选项可以重复指定多次,也可以与“-K”之外的其他选项组合使用。

-o file  把删除标识符后的输出结果写到指定的文件,而不是替代现有的文件。当使用这个选项指定输出文件参数file时,命令行中只能指定一个目标文件参数objfile

-O bfdname, --output-target=bfdname  使用指定目标代码格式bfdname的输出文件取代objfile文件。

-p, --preserve-dates  保持文件的访问与修改时间不变。

-R section, --remove-section=section  从输出文件中删除指定节名为section的代码段。这个选项可以重复指定多次。注意,这个选项如果使用不当,可能会导致输出文件不可用。

-s, --strip-all  删除所有的标识符。

-S, -d, -g, --strip-debug  仅删除调试符号。

-v, --verbose  详细显示模式。显示修改的所有目标文件列表。在处理档案文件的情况下,“strip -v”命令将会显示档案文件中的所有成员文件列表。

-w, --wildcard  允许在“-K”或“-N”等选项指定的标识符参数symbol中使用正则表达式。在指定选项参数的标识符名字中,可以使用“?”、“*”、“\”和“[ ]”等元字符,但在包含元字符时,前后必须加单双引号。如果标识符名字中的第一个字符是“!”,表示取其反义。注意,加“!”时前后必须加单引号。例如,“-w -K '!_*'”表示删除以下画线“_”为首字符的标识符,保留其他任何标识符。

-x, --discard-all  删除非全局的标识符。

-X, --discard-locals  删除编译器生成的局部标识符(通常以“L”或“.”为首字符)。

--info  显示适用各种系统结构的可用目标代码格式列表,然后退出。

--keep-file-symbols  当使用“--strip-debug”或“--strip-unneeded”等选项删除文件中的标识符时,保留指定源代码文件名的任何标识符。如果不同时指定此选项,这样的标识符也会随之一同删除。

--only-keep-debug  删除“--strip-debug”选项未能删除的任何段内的标识符,完整无损地保留调试段。对于ELF目标文件而言,这将会在输出文件中保留所有的注释段。

--strip-unneeded  删除重定位处理不需要的所有标识符。

@file  从指定的文件中读取命令行选项。把读取的选项插入@file的位置,替换该选项。如果file不存在或无法读,按文字处理该选项,但不会删除。选项的写法如同命令行,多个选项之间需加空白字符作为分隔符。文件中也可以包括@file选项,采用同样的方法递归处理。

应用实例

1. 删除目标文件中的标识符,保持文件的访问与修改时间不变。

$ date
Thu Mar 29 10:23:21 CST 2012
$ ls -l atmmon
-rwxr-xr-x. 1 gqxing gqxing 37897 Mar 27 21:46 atmmon
$ strip -p atmmon
$ ls -l atmmon
-rwxr-xr-x. 1 gqxing gqxing 31096 Mar 27 21:46 atmmon
$

2. 删除目标文件中任何标识符,把处理后的可执行文件写到指定的文件中。

$ strip -s -o atmmon2 atmmon
$

索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z