可執行與可鏈接格式

可执行与可链接格式（，缩写 ，此前的写法是Extensible Linking Format），常被称为ELF格式，在计算中，是一种用于可执行文件、目标代码、共享库和核心转储（core dump）的标准文件格式。首次发布于一个名为System V Release 4（SVR4）的Unix操作系统版本中关于应用二进制接口（ABI）的规范中，并且此后不久发布于工具接口标准（Tool Interface Standard）Tool Interface Standard (TIS) Executable and Linking FOrmat (ELF) SpecificationVersion 1.2 (May 1995)，随后很快被不同Unix发行商所接受。1999年，这种格式被86open项目选为x86架构处理器上的Unix和类 Unix系统的标准二进制文件格式。

按照设计，ELF格式灵活性高、可扩展，并且跨平台。比如它支持不同的字节序和地址范围，所以它不会不兼容某一特别的CPU或指令架构。这也使得ELF格式能够被运行于众多不同平台的各种操作系统所广泛采纳。

文件格式
每个 ELF 文件都由一个 ELF 首部和紧跟其后的文件数据部分组成。数据部分可以包含：
程序头表（Program header table）：描述 0 个或多个内存段信息。
分段头表（Section header table）：描述 0 段或多段链接与重定位需要的数据。
程序头表与分段头表引用的数据，比如 .text .data。

内存段中包含了用于某个 ELF 文件运行时执行所需的信息，而片段中包含了用于链接和重定位的重要数据。整个文件中的任何一个字节至多只能属于一个片段，也就是说可能存在不属于任何片段的孤立字节。
 ELF 文件首部的 16 进制内容举例 
00000000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 3e 00 01 00 00 00  c5 48 40 00 00 00 00 00  |..>......H@.....|

 技术规范 

 通用：
 System V Application Binary InterfaceSystem V Application Binary Interface 4.1版（1997年3月18日）
 System V ABI UpdateSystem V ABI Update （2009年10月）
 AMD64：
 System V ABI, AMD64 SupplementSystem V ABI, AMD64 Supplement
 Arm:
 ELF for the ARM ArchitectureELF for the ARM Architecture
 IA-32：
 System V ABI, Intel386 Architecture Processor SupplementSystem V ABI, Intel386 Architecture Processor Supplement 
 IA-64：
 Itanium Software Conventions and Runtime GuideItanium Software Conventions and Runtime Guide （2000年9月）
 M32R：
 M32R ELF ABI SupplementM32R ELF ABI Supplement 1.2版（2004年8月26日）
 MIPS：
 System V ABI, MIPS RISC Processor SupplementSystem V ABI, MIPS RISC Processor Supplement 
 MIPS EABI documentationMIPS EABI documentation （2003年6月11日）
 Motorola 6800：
 Motorola 8- and 16- bit Embedded ABIMotorola 8- and 16- bit Embedded ABI 
 PA-RISC：
 ELF Supplement for PA-RISCELF Supplement for PA-RISC1.43版（1997年10月6日）
 PowerPC：
 System V ABI, PPC SupplementSystem V ABI, PPC Supplement
 PowerPC Embedded Application Binary InterfacePowerPC Embedded Application Binary Interface32-Bit Implementation（1995年10月1日）
 64-bit PowerPC ELF Application Binary Interface Supplement64-bit PowerPC ELF Application Binary Interface Supplement 1.9版（2004年）
 RISC-V：
 RISC-V ELF SpecificationRISC-V ELF Specification 
 SPARC：
 System V ABI, SPARC SupplementSystem V ABI, SPARC Supplement
 S/390：
 S/390 32bit ELF ABI SupplementS/390 32bit ELF ABI Supplement
 zSeries：
 zSeries 64bit ELF ABI SupplementzSeries 64bit ELF ABI Supplement
 Symbian OS 9：
 E32Image file format on Symbian OS 9E32Image file format on Symbian OS 9

Linux标准规范（LSB）增修了上述一些规格中所指定的架构中相关的部分。例如关于System V ABI、AMD64 Supplement的案例。

工具
 GNU Binutils 是用来处理许多格式的目标文件(包括elf文件)一整套的编程语言工具程序，包括readelf，objdump，objcopy, nm, strings, strip, as, ar。
readelf显示elf文件
objdump显示elf和object格式文件，解码elf文件中高级语言语句所对应的机器语言语句段落，汇编语言语句段落。
nm显示elf文件中变量名和地址

 引用 

Category:可执行文件格式