在类似Unix的操作系统上,strip命令从编译的目标文件中丢弃符号。
查看英文版
1 strip 运行系统环境
2 strip 描述
3 strip 语法
4 strip 例子
Unix&Linux
strip是一个GNU 实用程序,用于“剥离”目标文件中的符号。这对于最小化它们的文件大小,简化它们的分发很有用。对于使反向编译 工程的代码更加困难也很有用。
提供给strip的目标文件列表可能包括档案,并且必须至少提供一个目标文件。目标文件本身由strip修改;没有创建新文件。
查看英文版
strip [options] objfile [...]
选件
-F bfdname,--target=bfdname | 将原始objfile视为目标代码格式为bfdname的文件,并以相同的格式重写它。 |
--help | 显示的摘要选项来strip和退出。 |
--info | 显示一个列表,其中列出了所有可用的体系结构和对象格式。 |
-I bfdname,-- input-target = bfdname | 将原始objfile视为目标代码格式为bfdname的文件。 |
-O bfdname,-- output-target = bfdname | 将objfile替换为输出格式为bfdname的文件。 |
-R sectionname,-- remove -section =sectionname | 从输出文件中删除任何名为sectionname的节。可以多次给此选项。请注意,不当使用此选项可能会使输出文件无法使用。 |
-s,-- strip-all | 删除所有符号。 |
-g,-S,-d,-- strip-debug | 仅删除调试符号。 |
--strip-dwo | 删除所有DWARF .dwo部分的内容,其余的调试部分和所有符号保持不变。 |
--strip-unneeded | 删除重定位处理不需要的所有符号。 |
-K symbolname,-- keep-symbol = symbolname | 剥离符号时,即使符号通常被剥离,也应保留符号symbolname。可以多次给此选项。 |
-N symbolname,-- strip-symbol = symbolname | 从源文件中删除符号symbolname。可以多次给此选项,也可以将其与-K以外的其他Strip选项结合使用。 |
-o file | 将剥离的输出放入文件中,而不是替换现有文件。使用此参数时,只能指定一个objfile 参数。 |
-p,-- preserve-dates | 保留文件的访问和修改日期。 |
-D,--enable-deterministic-archives | 以确定性模式操作。复制存档成员并写入存档索引时,对于UID,GID,时间戳记请使用零,并为所有文件使用一致的文件模式。 |
-w,--wildcard |
允许使用其他命令行选项中使用的符号名形式的正则表达式。问号(?),星号(*),反斜杠(\)和方括号([])运算符可以在符号名称中的任何位置使用。如果符号名称的第一个字符是感叹号(!),则该符号的开关方向相反。例如:-w -K!foo -K fo *将导致strip只保留以字母“ fo ”开头的符号,而丢弃符号“ foo ”。 |
-x,-- discard-all | 删除非全局符号。 |
-X,-- discard-locals | 删除编译器生成的本地符号。(这些通常以' L '或' 。 '开头。) |
--keep-file-symbols | 剥离文件时,可能使用--strip-debug或--strip-unneeded,保留任何指定源文件名的符号,否则将被剥离。 |
--only-keep-debug |
剥离文件,删除--strip-debug不会剥离的任何节的内容,并使调试节完整无缺。在ELF文件中,这会将所有注释部分保留在输出中。 目的是将此选项与--add-gnu-debuglink一起使用,以创建一个两部分可执行文件。一个是剥离的二进制文件,它将在RAM和分配中占用较少的空间,第二个是仅在需要调试能力时才需要的调试信息文件。建议的创建这些文件的过程如下: / 正常链接可执行文件。假设它被称为foo,那么... / 运行objcopy --only-keep-debug foo foo.dbg,以创建包含调试信息的文件。 / 运行objcopy --strip-debug foo创建剥离的可执行文件。 / 运行objcopy --add-gnu-debuglink = foo.dbg foo,将调试信息的链接添加到剥离的可执行文件中。 / 注意-选择.dbg作为调试信息文件的扩展名是任意的;可以是任何东西。同样,-- only-keep-debug步骤是可选的。您可以改为: / 正常链接可执行文件。 / 将foo复制到foo.full / 运行strip --strip-debug foo / 运行objcopy --add-gnu-debuglink = foo.full foo / 换句话说,-- add-gnu-debuglink指向的文件可以是完整的可执行文件。它不必是--only-keep-debug开关创建的文件。 注意:此开关仅适用于完全链接的文件。在调试信息可能不完整的目标文件上使用它是没有意义的。目前,gnu_debuglink功能仅支持存在一个包含调试信息的文件名,而不是每个对象文件一个的多个文件名。 |
-V,-- version | 显示strip的版本号。 |
-v,-- verbose | 详细输出:列出所有已修改的目标文件。对于档案,` strip -v '列出档案的所有成员。 |
查看英文版
strip -s a.out
上面的示例将从可执行文件a.out中删除符号表。
查看英文版
sysklogd | s2p | service | sag | set | setenv | setfacl | sfdisk | sha224sum | sha256sum | sha384sum | sha512sum | shutdown | sleep | stat | startx | strftime | swapoff | shred |
未知的网友