这份文档和原始的那份ELF文档格式的文档有以下一个不同:
1. 忽略了分页记数 。
2. 因为上述原因,在这篇内容目录中去掉了页号,索引完全被忽略。
(不象Postscript文档,txt文本能够用来搜索)
3. 页标题的内容和文章的页脚已在开始的时候被换掉了。
4. 文章的排版也已修正过了。
5. 假如必要,不同的字体已被忽略了。大部分地方,这片文档能让您
充分的理解。然而,很小的地方,原始的文档使用了斜体字来指出文
章中的字符变量。在那种情况下,本文使用<尖括号>。在原始的文档
中没有出现尖括号。
6. 原始的文档有三个错误,假如您是不经意读他的话,是不会明显
就能找出的。但是在这里,明确的被鉴别出来了。
我很冒昧的纠正了那些错误。在他们的位置用一个做上了标记。
可能更有其他我没有看出来的的错误。
假如有如何其他的区别都是我的责任。这样的错误请
mailto:breadbox@muppetlabs.com.
Brian Raiter
[Last edited Fri Jul 23 1999]
________________________________________________________________
EXECUTABLE AND LINKABLE FORMAT (ELF)
Portable Formats Specification, Version 1.1
Tool Interface Standards (TIS)
________________________________________________________________
=========================== Contents 内容===========================
序言
1. OBJECT文档
导言
ELF头(ELF Header)
Sections
String表(String Table)
Symbol表(Symbol Table)
重定位(Relocation)
2. 程式装载和动态连接
导言
Program头(Program Header)
Program装载(Program Loading)
Dynamic连接(Dynamic Linking)
3. C LIBRARY
C 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(Executable
and Linking Format). 在object文档中有三种主要的类型。
* 一个可重定位(relocatable)文档保存着代码和适当的数据,用来和其他的
object文档一起来创建一个可执行文档或是个共享文档。
* 一个可执行(executable)文档保存着一个用来执行的程式;该文档指出了
exec(BA_OS)如何来创建程式进程映象。
* 一个共享object文档保存着代码和合适的数据,用来被下面的两个链接器
链接。第一个是连接编辑器[请参看ld(SD_CMD)],能够和其他的可重定位和
共享object文档来创建其他的object。第二个是动态链接器,联合一个
可执行文档和其他的共享object文档来创建一个进程映象。
一个object文档被汇编器和联接器创建, 想要在处理机上直接运行的object
文档都是以二进制来存放的。那些需要抽象机制的程式,比如象shell脚本,
是不被接受的。
在介绍性的材料过后,第一部分主要围绕着文档的格式和关于如何建立程式。
第二部分也描述了object文档的几个组成部分,集中在执行程式所必须的信息上。
文档格式
Object文档参和程式的联接(创建一个程式)和程式的执行(运行一个程式)。
object 文档格式提供了一个方便有效的方法并行的视角看待文档的内容,
在他们的活动中,反映出不同的需要。例 1-1图显示了一个object文档的
组织图。
图1-1: Object文档格式
Linking 视角 Execution 视角
============ ==============
ELF header ELF header
Program header table (optional) Program header table
Section 1 Segment 1
... Segment 2
Section n ...
Section header table Section header table (optional)
一个ELF头在文档的开始,保存了路线图(road map),描述了该文档的组织情况。
sections保存着object 文档的信息,从连接角度看:包括指令,数据,
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




