目前主流的可执行文件 格式 有 两种, Windows 平 台下 的 PE 文件 格式 和 Linux 平 台下 的 ELF 文件 格式。
Linux 使用 ELF 作为 目标 文件 的 格式。 从前 Linux 中 目标 文件 以 a. out 格式 为主, 不过 由于 a. out 格式 不能 很好 地支 持 动态链接以及 C++, 因此其主流地位 逐渐被 ELF 格式所取代。
在 Linux 平台 下, 除了 可执行文件( Executable File), 可重定位目标文件( Relocatable Object File)、 共享目标 文件( Shared Object File)、 核心转储文件( Core Dump File) 也是 ELF 格式 的 文件。
在 ELF 文件 中, 保存的最关键的信息 是 程序中的 代码 和 数据。 一般 的, 程序的代码 以 二进制指令 的 形式保存 在代码段(. text) 中, 程序的数据 以二进制的形式 保存在 数据段(. data)或“. bss” 段中。 ELF 文件 的 其他结构, 一般用于对 ELF 文件内容进行管理, 为 链接 器、 加载 器、 调试器、 操作系统等提供必要的信息。
在 Linux 系统 的“/ usr/ include/ elf. h” 头 文件 中, 定义了 ELF 文件涉及的所有数据结构.