ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Linux下的ELF文件格式简介(转)

Linux下的ELF文件格式简介(转)

原创 Linux操作系统 作者:BSDLite 时间:2007-08-15 23:10:12 0 删除 编辑
Linux下的ELF文件格式简介(转)[@more@]  1. 概述

  Executable and linking format(ELF)文件是x86 Linux系统下的一种常用目标文件(object file)格式,有三种主要类型:

  (1)适于连接的可重定位文件(relocatable file),可与其它目标文件一起创建可执行文件和共享目标文件。
  (2)适于执行的可执行文件(executable file),用于提供程序的进程映像,加载的内存执行。
  (3)共享目标文件(shared object file),连接器可将它与其它可重定位文件和共享目标文件连接成其它的目标文件,动态连接器又可将它与可执行文件和其它共享目标文件结合起来创建一个进程映像。

  ELF文件格式比较复杂,本文只是简要介绍它的结构,希望能给想了解ELF文件结构的读者以帮助。具体详尽的资料请参阅专门的ELF文档。

  2. 文件格式

  为了方便和高效,ELF文件内容有两个平行的视角:一个是程序连接角度,另一个是程序运行角度,如图1所示。

  ELF header在文件开始处描述了整个文件的组织,Section提供了目标文件的各项信息(如指令、数据、符号表、重定位信息等),Program header table指出怎样创建进程映像,含有每个program header的入口,Section header table包含每一个section的入口,给出名字、大小等信息。



Click here to open new window400) {this.resized=true; this.width=400; this.alt='Click here to open new window';}" border=0 resized="true">
图1



  3. 数据表示

  ELF数据编码顺序与机器相关,数据类型有六种,见表1。



400) {this.resized=true; this.width=400; this.alt='Click here to open new window';}" border=0>



  4. ELF文件头

  象bmp、exe等文件一样,ELF的文件头包含整个文件的控制结构。它的定义如下:
CODE:
#define EI_NIDENT 16
typedef struct{
unsigned char e_ident[EI_NIDENT];
Elf32_Half e_type;
Elf32_Half e_machine;
Elf32_Word e_version;
Elf32_Addr e_entry;
Elf32_Off e_phoff;
Elf32_Off e_shoff;
Elf32_Word e_flags;
Elf32_Half e_ehsize;
Elf32_Half e_phentsize;
Elf32_Half e_phnum;
Elf32_Half e_shentsize;
Elf32_Half e_shnum;
Elf32_Half e_shstrndx;
}Elf32_Ehdr;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10617542/viewspace-960305/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论