目标文件格式

目标文件是编译器或汇编器处理源代码后生成的二进制文件,主要有三种格式。

ELF(Executable and Linkable Format):Unix和Linux系统的标准目标文件格式,也是CSAPP讲解的重点。ELF格式统一支持三种类型的目标文件。

COFF(Common Object File Format):早期Unix系统使用的目标文件格式,结构相对简单,但扩展性有限。

PE(Portable Executable):Windows系统的目标文件格式,源自COFF,在Windows平台上使用。

目标文件分为三类:

  • 可重定位目标文件(.o):包含可重定位的机器代码和数据,可与其他 .o 文件合并生成可执行文件。
  • 可执行目标文件:经过链接后的最终产物,可直接加载到内存执行,地址已完全确定。
  • 共享目标文件(.so / .dll):在加载时或运行时可以被动态链接到内存中的特殊目标文件。

链接到