ELF(Executable and Linkable Format) 该格式作为一种可执行文件,最初是在System V操作系统上得以广泛应用的.目前主要在UNIX和Linux系统以及各种嵌入式系统中广泛应用。ELF是一种二进制可执行文件格式规范,在用C/C++等高级语言写的程序经过预处理、编译、汇编、链接等阶段生成具体的二进制代码后,可以保存成为ELF binary格式。常见的ELF文件主要包括可执行文件、共享库文件、目标文件三种。
ELF被定义成对文件格式和处理器体系结构的普适二进制文件格式。ELF文件包含许多重要的信息,如目标程序段和节、动态链接信息、符号表、程序入口点等。简单地说,ELF文件包括文件头、程序头和节头三部分内容。其中文件头主要记录了ELF文件的类型、目标机器体系结构、ELF标识、段表偏移量、字符表偏移量,以及各个头部大小等信息。程序头记录的是可执行文件在虚拟空间中各个程序段的大小、数据类型、访问权限等。而节头则记录了各个编译单元在ELF文件中的地址偏移、大小等详细信息。
ELF文件在计算机科学中起着重要的作用。它们构成了程序代码、数据、通信和源代码的优秀二进制表示和交换格式。除此之外,ELF文件还具有共享库、调试文件、交叉编译、目标生成等各种应用。通过ELF文件格式,开发者可以轻松地执行编译、链接和装载等操作。
与另一种二进制可执行文件格式–COFF(通用目标文件格式)相比较,在ELF文件中,各种表、即将被链接的属性都被分明地区分开。这种方法就使得ELF文件在应用程序变化时保证信息的准确性。由于ELF文件的设计人员同时也是GNU Binutils的奠基人,因此他们将自己对ELF文件格式的先进理解,加入到了Binutils的代码中,这就有利于开发者使用ELF文件进行交叉编译、调试和生成目标文件。