fbpx
维基百科

可執行與可鏈接格式

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

ELF
扩展名无扩展名、.o.so.elf.prx.axf.bin.puff.ko.mod
魔術數字0x7F 'E' 'L' 'F'
开发者Unix 系统实验室
格式类型二进制文件可执行文件目标代码共享库核心转储
作为容器多种二进制可执行文件格式

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

文件格式

 
ELF文件有两种索引:程序标头中记载了运行时所需的,而段首地址表记载了二进制文件中的首地址

每个 ELF 文件都由一个 ELF 首部和紧跟其后的文件数据部分组成。数据部分可以包含:

  • 程序头表(Program header table):描述 0 个或多个内存段信息
  • 分段头表(Section header table):描述 0 段或多段链接与重定位需要的数据
  • 程序头表与分段头表引用的数据,比如 .text .data
 
ELF 文件结构

内存段中包含了用于某个 ELF 文件运行时执行所需的信息,而片段中包含了用于链接和重定位的重要数据。整个文件中的任何一个字节至多只能属于一个片段,也就是说可能存在不属于任何片段的孤立字节。

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@.....|

ELF 文件首部的 16 进制内容举例

技术规范

  • 通用:
    • System V Application Binary Interface 4.1版​(1997年3月18日)
    • System V ABI Update​(2009年10月)
  • AMD64
    • System V ABI, AMD64 Supplement
  • Arm:
    • ELF for the ARM Architecture
  • IA-32
    • System V ABI, Intel386 Architecture Processor Supplement
  • IA-64
    • Itanium Software Conventions and Runtime Guide​(2000年9月)
  • M32R:
    • M32R ELF ABI Supplement 1.2版​(2004年8月26日)
  • MIPS
    • System V ABI, MIPS RISC Processor Supplement
    • MIPS EABI documentation​(2003年6月11日)
  • Motorola 6800
    • Motorola 8- and 16- bit Embedded ABI
  • PA-RISC
    • 1.43版​(1997年10月6日)
  • PowerPC
    • 32-Bit Implementation​(1995年10月1日)
    • 64-bit PowerPC ELF Application Binary Interface Supplement 1.9版​(2004年)
  • RISC-V
    • RISC-V ELF Specification
  • SPARC
  • S/390:
    • S/390 32bit ELF ABI Supplement
  • zSeries
    • zSeries 64bit ELF ABI Supplement
  • Symbian OS 9:

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

工具

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

引用

  1. ^ Tool Interface Standard (TIS) Executable and Linking FOrmat (ELF) SpecificationVersion 1.2 (May 1995)
  2. ^ LSB Referenced Specifications. linuxfoundation.org. [27 April 2015]. 
  3. ^ Executable and Linking Format (ELF). linuxfoundation.org. [27 April 2015]. 
  4. ^ Introduction. linuxfoundation.org. [27 April 2015]. 

可執行與可鏈接格式, 可执行与可链接格式, 英語, executable, linkable, format, 缩写, 此前的写法是, extensible, linking, format, 常被称为, elf格式, 在计算中, 是一种用于可执行文件, 目标代码, 共享库和核心转储, core, dump, 的标准文件格式, 首次发布于一个名为, system, release, svr4, unix, 操作系统版本中关于应用二进制接口, 的规范中, 并且此后不久发布于工具接口标准, tool, interfac. 可执行与可链接格式 英語 Executable and Linkable Format 缩写 ELF 此前的写法是 Extensible Linking Format 常被称为 ELF格式 在计算中 是一种用于可执行文件 目标代码 共享库和核心转储 core dump 的标准文件格式 首次发布于一个名为 System V Release 4 SVR4 的 Unix 操作系统版本中关于应用二进制接口 ABI 的规范中 并且此后不久发布于工具接口标准 Tool Interface Standard 1 随后很快被不同 Unix 发行商所接受 1999 年 这种格式被 86open 项目选为 x86 架构处理器上的 Unix 和 类 Unix 系统的标准二进制文件格式 ELF扩展名无扩展名 tt o tt tt so tt tt elf tt tt prx tt tt axf tt tt bin tt tt puff tt tt ko tt 和 tt mod tt 魔術數字0x7F E L F 开发者Unix 系统实验室格式类型二进制文件 可执行文件 目标代码 共享库 核心转储作为容器多种二进制可执行文件格式按照设计 ELF 格式灵活性高 可扩展 并且跨平台 比如它支持不同的字节序和地址范围 所以它不会不兼容某一特别的 CPU 或指令架构 这也使得 ELF 格式能够被运行于众多不同平台的各种操作系统所广泛采纳 目录 1 文件格式 2 技术规范 3 工具 4 引用文件格式 编辑 ELF文件有两种索引 程序标头中记载了运行时所需的段 而段首地址表记载了二进制文件中段的首地址每个 ELF 文件都由一个 ELF 首部和紧跟其后的文件数据部分组成 数据部分可以包含 程序头表 Program header table 描述 0 个或多个内存段信息 分段头表 Section header table 描述 0 段或多段链接与重定位需要的数据 程序头表与分段头表引用的数据 比如 text data ELF 文件结构 内存段中包含了用于某个 ELF 文件运行时执行所需的信息 而片段中包含了用于链接和重定位的重要数据 整个文件中的任何一个字节至多只能属于一个片段 也就是说可能存在不属于任何片段的孤立字节 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 gt H ELF 文件首部的 16 进制内容举例技术规范 编辑通用 System V Application Binary Interface 4 1版 1997年3月18日 System V ABI Update 2009年10月 AMD64 System V ABI AMD64 Supplement Arm ELF for the ARM Architecture IA 32 System V ABI Intel386 Architecture Processor Supplement IA 64 Itanium Software Conventions and Runtime Guide 2000年9月 M32R M32R ELF ABI Supplement 1 2版 2004年8月26日 MIPS System V ABI MIPS RISC Processor Supplement MIPS EABI documentation 2003年6月11日 Motorola 6800 Motorola 8 and 16 bit Embedded ABI PA RISC ELF Supplement for PA RISC 1 43版 1997年10月6日 PowerPC System V ABI PPC Supplement PowerPC Embedded Application Binary Interface 32 Bit Implementation 1995年10月1日 64 bit PowerPC ELF Application Binary Interface Supplement 1 9版 2004年 RISC V RISC V ELF Specification SPARC System V ABI SPARC Supplement S 390 S 390 32bit ELF ABI Supplement zSeries zSeries 64bit ELF ABI Supplement Symbian OS 9 E32Image file format on Symbian OS 9 Linux标准规范 LSB 增修了上述一些规格中所指定的架构中相关的部分 2 例如关于System V ABI AMD64 Supplement的案例 3 4 工具 编辑GNU Binutils 是用来处理许多格式的目标文件 包括elf文件 一整套的编程语言工具程序 包括readelf objdump objcopy nm strings strip as ar a href Readelf html title Readelf readelf a 显示elf文件 a href Objdump html title Objdump objdump a 显示elf和object格式文件 解码elf文件中高级语言语句所对应的机器语言语句段落 汇编语言语句段落 a href Nm Unix html title Nm Unix nm a 显示elf文件中变量名和地址引用 编辑 Tool Interface Standard TIS Executable and Linking FOrmat ELF SpecificationVersion 1 2 May 1995 LSB Referenced Specifications linuxfoundation org 27 April 2015 Executable and Linking Format ELF linuxfoundation org 27 April 2015 Introduction linuxfoundation org 27 April 2015 取自 https zh wikipedia org w index php title 可執行與可鏈接格式 amp oldid 74691517, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。