StephenChan's Tech Space 潜心修炼

31May/100

ELF文件结构简述

现在PC平台流行的可执行文件格式主要是Windows下的PE(Portable Executable)和Linux的ELF(Executable Linkable Format),它们都是COFF(Common File Format)格式的变种。目标文件就是源代码编译后但未进行链接的那些中间文件(Windows的.obj和Linux下的.o),它跟可执行文件的内容与结构很相似,所以一般跟可执行文件格式一起采用一种格式存储。

Linux的.o/Windows的.obj、/bin/bash或Windows的exe、Linux的.so/Windows的.dll分别是什么文件?

  1. Linux的.o和Windows的.obj称为可重定位文件(Relocatable File),这类文件包含了代码和数据,可以被用来链接成可执行文件共享目标文件静态链接库也可以归为这一类。
  2. /bin/bash和Windows的.exe是可以直接执行的程序,它的代表就是ELF可执行文件,它们一般是没有扩展名的。
  3. Linux的.so和Windows的.dll称为共享目标文件,这种文件也包含了代码和数据,可以在以下两种情况下使用。一种是链接器可以使用这种文件跟其他的可重位文件和共享目标文件链接、产生新的目标文件。第二种是动态链接器可以将几个这种共享目标文件与可执行文件结合,作为进程映像的一部分来执行。

ELF目标文件的格式是怎样?

elf struct