elf结构解析(中文版).doc
文本预览下载声明
3. 页标题的内容和文章的页脚已经在开始的时候被换掉了。4. 文章的排版也已经修正过了。5. 如果必要,不同的字体已经被忽略了。大部分地方,这片文档能让你充分的理解。然而,很小的地方,原始的文档使用了斜体字来指出文章中的字符变量。在那种情况下,本文使用尖括号。在原始的文档中没有出现尖括号。6. 原始的文档有三个错误,如果你是不经意读它的话,是不会明显就能找出的。但是在这里,明确的被鉴别出来了。我很冒昧的纠正了那些错误。在他们的位置用一个{*}做上了标记。可能还有其他我没有看出来的的错误。如果有如何其他的区别都是我的责任。这样的错误请mailto:breadbox@.Brian Raiter[Last edited Fri Jul 23 1999]________________________________________________________________EXECUTABLE AND LINKABLE FORMAT (ELF)Portable Formats Specification, Version 1.1Tool Interface Standards (TIS)________________________________________________________________=========================== Contents 内容===========================序言1. OBJECT文件导言ELF头(ELF Header)SectionsString表(String Table)Symbol表(Symbol Table)重定位(Relocation)2. 程序装载与动态连接导言Program头(Program Header)Program装载(Program Loading)Dynamic连接(Dynamic Linking)3. C LIBRARYC Library________________________________________________________________导言________________________________________________________________ELF: 可执行连接格式可执行连接格式是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface(ABI)而开发和发布的。工具接口标准委员会(TIS)选择了正在发展中的ELF标准作为工作在32位INTEL体系上不同操作系统之间可移植的二进制文件格式。假定开发者定义了一个二进制接口集合,ELF标准用它来支持流线型的软件发展。 应该减少不同执行接口的数量。因此可以减少重新编程重新编译的代码。关于这片文档这篇文档是为那些想创建目标文件或者在不同的操作系统上执行文件的开发着准备的。它分以下三个部分:* 第一部分, “目标文件Object Files”描述了ELF目标文件格式三种主要的类型。* 第二部分, “程序转载和动态连接”描述了目标文件的信息和系统在创建运行时程序的行为。* 第三部分, “C 语言库”列出了所有包含在libsys中的符号,标准的ANSI C和libc的运行程序,还有libc运行程序所需的全局的数据符号。注意: 参考的X86体系已经被改成了Intel体系。________________________________________________________________1. 目标文件(Object file)________________________________________________________________========================= 序言 =========================第一部分描述了iABI的object文件的格式, 被称为ELF(Executableand Linking Format). 在object文件中有三种主要的类型。* 一个可重定位(relocatable)文件保存着代码和适当的数据,用来和其他的object文件一起来创建一个可执行文件或者是一个共享文件。* 一个可执行(executable)文件保存着一个用来执行的程序;该文件指出了exec(BA_OS)如何来创建程序进程映象。* 一个共享object文件保存着代码和合适的数据,用来被下面的两个链接器链接。第一个是连接编辑
显示全部