一开始的格式规范是 COFF,后来基于此微软制定了 PE 用于 Windows NT,System V Release 4 制定 ELF,这也是这两个如此相似的原因

可重定位文件

这类文件包含代码和数据,可以被用来链接成可执行文件或者共享目标文件

静态链接库可以被归为这一类(打包的目标文件)

例如 Linux 的 .o 文件 Windows 的 .obj

可执行文件

包含了可以直接执行的文件,它的代表就是 ELF 可执行文件,一般没有拓展名

Windows 下的 .exe

共享目标文件

这种文件包含了代码和数据:

  1. 链接器可以使用这种文件和其他的可重定位文件和共享目标文件链接,产生新的目标文件
  2. 动态链接器可以把几个这种共享目标文件和可执行文件结合,作为进程映像的一部分来运行

Linux 的 .so 和 Windows 的 .dll

核心转储文件

Core Dump File

当进程意外停止的时候,系统可以将该进程的地址空间的内容及终止的一些其他信息转储到核心转储文件

linux 下的 core dump