可执行与可链接格式
脚本错误:没有“Infobox”这个模块。脚本错误:没有“Check for unknown parameters”这个模块。
可执行与可链接格式(Template:Langx,缩写 脚本错误:没有“Lang”这个模块。,此前的写法是Extensible Linking Format),常被称为ELF格式,在计算中,是一种用于可执行文件、目标代码、共享库和核心转储(core dump)的标准文件格式。首次发布于一个名为System V Release 4(SVR4)的Unix操作系统版本中关于应用二进制接口(ABI)的规范中,并且此后不久发布于工具接口标准(Tool Interface Standard)[1],随后很快被不同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@.....|
技术规范[编辑]
页面Template:Div col/styles.css没有内容。
- 通用:
- AMD64:
- System V ABI, AMD64 Supplement[4]
- Arm:
- ELF for the ARM Architecture[5]
- IA-32:
- System V ABI, Intel386 Architecture Processor Supplement[6]
- IA-64:
- Itanium Software Conventions and Runtime Guide[7](2000年9月)
- M32R:
- M32R ELF ABI Supplement[8]1.2版(2004年8月26日)
- MIPS:
- Motorola 6800:
- Motorola 8- and 16- bit Embedded ABI[11]
- PA-RISC:
- ELF Supplement for PA-RISC[12]1.43版(1997年10月6日)
- PowerPC:
- RISC-V:
- RISC-V ELF Specification[16]
- SPARC:
- System V ABI, SPARC Supplement[17]
- S/390:
- S/390 32bit ELF ABI Supplement[18]
- zSeries:
- zSeries 64bit ELF ABI Supplement[19]
- Symbian OS 9:
- E32Image file format on Symbian OS 9[20]
Linux标准规范(LSB)增修了上述一些规格中所指定的架构中相关的部分。[21]例如关于System V ABI、AMD64 Supplement的案例。[22][23]
工具[编辑]
- GNU Binutils 是用来处理许多格式的目标文件(包括elf文件)一整套的编程语言工具程序,包括readelf,objdump,objcopy, nm, strings, strip, as, ar。
readelf显示elf文件objdump显示elf和object格式文件,解码elf文件中高级语言语句所对应的机器语言语句段落,汇编语言语句段落。nm显示elf文件中变量名和地址
引用[编辑]
- ↑ Tool Interface Standard (TIS) Executable and Linking FOrmat (ELF) SpecificationVersion 1.2 (May 1995)
- ↑ System V Application Binary Interface (页面存档备份,存于互联网档案馆)
- ↑ System V ABI Update (页面存档备份,存于互联网档案馆)
- ↑ System V ABI, AMD64 Supplement
- ↑ ELF for the ARM Architecture
- ↑ System V ABI, Intel386 Architecture Processor Supplement (页面存档备份,存于互联网档案馆)
- ↑ Itanium Software Conventions and Runtime Guide (页面存档备份,存于互联网档案馆)
- ↑ M32R ELF ABI Supplement (页面存档备份,存于互联网档案馆)
- ↑ System V ABI, MIPS RISC Processor Supplement (页面存档备份,存于互联网档案馆)
- ↑ MIPS EABI documentation (页面存档备份,存于互联网档案馆)
- ↑ Motorola 8- and 16- bit Embedded ABI (页面存档备份,存于互联网档案馆)
- ↑ ELF Supplement for PA-RISC
- ↑ System V ABI, PPC Supplement
- ↑ PowerPC Embedded Application Binary Interface
- ↑ 64-bit PowerPC ELF Application Binary Interface Supplement (页面存档备份,存于互联网档案馆)
- ↑ RISC-V ELF Specification (页面存档备份,存于互联网档案馆)
- ↑ System V ABI, SPARC Supplement
- ↑ S/390 32bit ELF ABI Supplement
- ↑ zSeries 64bit ELF ABI Supplement
- ↑ E32Image file format on Symbian OS 9
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
脚本错误:没有“Navbox”这个模块。