ELF 文件标准里把系统中采用ELF 格式的文件归类为四种:
可重定位文件,Relocatable File ,这类文件包含代码和数据,可用来连接成可执行文件或共享目标文件,静态链接库归为此类,对应于Linux 中的.o ;Windows 的 .obj.
可执行文件,Executable File ,这类文件包含了可以直接执行的程序,它的代表就是ELF 可执行文件。Linux下,他们一般没有扩展名,比如/bin/bash ;Windows 下的 .exe
共享目标文件,Shared Object File ,这种文件包含代码和数据,链接器可以使用这种文件跟其他可重定位文件的共享目标文件链接,产生新的目标文件。另外是动态链接器可以将几个这种共享目标文件与可执行文件结合,作为进程映像来运行。对应于Linux 中的 .so,Windows 中的 DLL
核心转储文件,Core Dump File,当进程意外终止,系统可以将该进程地址空间的内容及终止时的一些信息转存到核心转储文件。 对应 Linux 下的core dump。
现在PC平台流行的可执行文件格式(Executable File Format),主要是Windows下的PE(Portable Executable)和Linux的ELF(Executable and Linking Format,可执行和链接格式)。他们都是COFF(Common Object File Format)的变种。
ARM架构采用的也是ELF文件格式。
COFF是在Unix System V Release 3时由 UNIX 系统实验室(UNIX System Laboratories, USL)首先提出并且使用的文件规范,后来微软公司基于COFF格式,制定了PE格式标准,并将其用于当时的Windows NT系统。在System V Release 4时,UNIX系统实验室(USL)在COFF的基础上,开发和发布了ELF格式,作为应用程序二进制接口 (Application Binary Interface(ABI)。