ELF 是 Unix 和类 Unix 系统上标准的二进制文件格式,用于可执行文件、目标文件、共享库和核心转储。它定义了程序如何被链接和加载运行,是 Linux 程序执行的基础。

| 中文名 | 可执行与可链接格式 |
| 英文名 | Executable and Linkable Format |
| 类型 | 二进制文件格式 |
| 适用系统 | Linux、类 Unix |
| 文件类型 | 可执行、目标、共享库、核心转储 |
ELF(Executable and Linkable Format,可执行与可链接格式)是 Linux 及大多数类 Unix 系统采用的标准二进制文件格式。可执行程序、目标文件(.o)、共享库(.so)以及进程崩溃时生成的核心转储文件,通常都以 ELF 格式组织。它规定了程序如何被链接器链接、被加载器载入内存并运行。
ELF 由 Unix 系统实验室设计,后被广泛采纳为 x86、ARM 等平台上类 Unix 系统的标准格式,取代了早期的 a.out 和 COFF。一个 ELF 文件可从两种视角解读:链接视角下由若干节(Section)组成,供链接器处理;运行视角下由若干段(Segment)组成,供加载器映射到内存。
ELF 是 Linux 程序运行的基石。编译器产出 ELF 目标文件,链接器把它们组合成可执行文件或共享库,内核的 ELF 加载器负责解析程序头并建立进程地址空间,动态链接器(ld.so)在启动时加载依赖的共享库并完成符号绑定。readelf、objdump 等工具可用于解析和查看 ELF 内容。
问:节(Section)和段(Segment)有什么区别?答:节是链接视角的划分,粒度细,供链接器使用;段是运行视角的划分,由若干节组合而成,供加载器映射内存。同一文件两套划分并存。
问:Windows 也用 ELF 吗?答:不用。Windows 使用 PE(可移植可执行)格式,macOS 使用 Mach-O 格式,ELF 主要用于 Linux、BSD 等类 Unix 系统。

| 中文名 | 可执行与可链接格式 |
| 英文名 | Executable and Linkable Format |
| 类型 | 二进制文件格式 |
| 适用系统 | Linux、类 Unix |
| 文件类型 | 可执行、目标、共享库、核心转储 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧