Linux ELF ELF = Executable and Linkable Format,可执行连接格式,是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface,ABI)而开发和发布的。扩展名为elf。工具接口标准委员会(TIS)选择了正在发展中的ELF标准作为工作在32位INTEL体系上不同操作系统之间可移植的二进制文件格式。假定开发者定义了一个二进制接口集合,ELF标准用它来支持流线型的软件发展。应该减少不同执行接口的数量。因此可以减少重新编程重新编译的代码。
ELF
文件的类型
ELF
文件主要有三种类型
(1)
可重定位文件包含了代码和数据
.
可与其它
ELF
文件建立一个可执行或共享的文
件:
(2)
可执行文件时可直接执行的程序:
(3)
共享目标文件包括代码和数据,可以在两个地方链接。第一,
连接器可以把它
和其它可重定位文件和共享文件一起处理以建立另一个
ELF
文件;
第二,
动态链接器
把它和一个可执行文件和其它共享文件结合在一起建立一个进程映像。
ELF
文件的类型
ELF
文件主要有三种类型
(1)
可重定位文件包含了代码和数据
.
可与其它
ELF
文件建立一个可执行或共享的文
件:
(2)
可执行文件时可直接执行的程序:
(3)
共享目标文件包括代码和数据,可以在两个地方链接。第一,
连接器可以把它
和其它可重定位文件和共享文件一起处理以建立另一个
ELF
文件;
第二,
动态链接器
把它和一个可执行文件和其它共享文件结合在一起建立一个进程映像。
ELF文件主要有三种类型(1)可重定位文件包含了代码和数据可与其它ELF文件建立一个可执行或共
享的文件
(2)可执行文件是可以直接执行的程序
(3)共享目标文件包括代码和数据可以在两个地方链接。第一连接器可以
把它和其它可重定位文件和共享文件一起处理以建立另一个ELF文件;第二动
态链接器把它和一个可执行文件和其它共享文件结合在一起建立一个进程映
像。
ELF文件的组织
ELF文件参与程序的连接(建立一个程序)和程序的执行(运行一个程序)编译器
和链接器将其视为节头表(section header table)描述的一些节(section)的集合而加
载器则将其视为程序头表(program header table)描述的段(segment)的集合通常
一个段可以包含多个节。可重定位文件都包含一个节头表可执行文件都包含一
个程序头表。共享文件两者都包含有。为此ELF文件格式同时提供了两种看待
文件内容的方式反映了不同行为的不同要求。
从链接的角度看ELF文件从开始到结束可以看成是如下组成的
a)ELF文件头
b)程序头表可选
c)第1节,第2节...第n节...
d)节头表
从执行的角度看ELF文件从开始到结束可以看成是如下组成的
a)ELF文件头
b)程序头表
c)第1段,第2段...
d)节头表(可选)