IBM 的 AIXstrip
实用程序文档声明如下:
不带选项的strip 命令删除行号信息、重定位信息、符号表、调试部分、typchk 部分和注释部分。
如果重定位信息被删除,为什么剥离的可执行文件仍然可用?
IBM 的 AIXstrip
实用程序文档声明如下:
不带选项的strip 命令删除行号信息、重定位信息、符号表、调试部分、typchk 部分和注释部分。
如果重定位信息被删除,为什么剥离的可执行文件仍然可用?
COFF 文件不是为了支持链接时间后的重定位而设计的:
最初用于 Linux 的二进制格式是一种
a.out
变体。在引入共享库时,必须做出某些设计决策才能在a.out
. 主要接受的限制是在加载时和之后不执行重定位。共享库必须以它们在运行时在磁盘上使用的形式存在。这对共享库的构建和使用方式施加了重大限制:每个共享库必须有一个固定的加载地址;否则将无法生成不必重新定位的共享库。1
虽然 XCOFF 表示支持使用共享库的 COFF 的扩展,但删除的重定位信息strip
属于用于链接时重定位而不是加载或运行时重定位的信息:
通过删除绑定器和符号调试程序使用的信息来减小扩展通用对象文件格式 (XCOFF) 对象文件的大小。
当单个 XCOFF 目标文件被链接以创建 XCOFF 可执行文件时,活页夹使用重定位信息来修改地址常量和其他可重定位的值。2
活页夹的作用似乎类似于ld
Linux 系统上的链接编辑器。
看-x
flag说明:
删除符号表信息但不删除静态或外部符号信息。-x 标志还会删除重定位信息,因此无法链接到文件。