Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1305778
  • 博文数量: 92
  • 博客积分: 10389
  • 博客等级: 上将
  • 技术积分: 1918
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-10 16:13
文章存档

2014年(1)

2012年(15)

2009年(6)

2008年(37)

2007年(72)

2006年(54)

我的朋友

分类: LINUX

2008-01-28 15:11:01

其实我门这么枉费心计的记录自己的心路历程,还不如好好的把深入理解计算机这本巨作看上几遍。
下面的文章只是为了完善本BLOG的系统性而加入的,如果想更清楚了解,建议看看深入理解计算机
这本我看了2遍的书,1遍没记住多少,2遍只能用佩服与崇拜来形容。
 
 
 
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文件的几个组成部分,集中在执行程序所必须的信息上。
阅读(1011) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~