目标文件的格式
编译器编译源代码后生成的文件叫做目标文件.
目标文件从结构上讲,它是已经编译后的可执行文件格式,只是还没有经过链接的过程,其中可能有些符号或有些地址还没有被调整。其实它本身就是按照可执行文件格式存储的,只是跟真正的可执行文件在结构上稍有不同。
现在PC平台流行的可执行文件格式(Executable)主要是Windows下的PE ( PortableExecutable)和Linux的ELF (Executable Linkable Format),它们都是COFF(Common fileformat〉格式的变种。
目标文件就是源代码编译后但未进行链接的那些中间文件( Windows的.obj和 Linux 下的.o),它跟可执行文件的内容与结构很相似,所以一般跟可执行文件格式一起采用种格式存储。从广义上看,目标文件与可执行文件的格式其实几乎是一样的,所以我们可以广义地将目标文件与可执行文件看成是一种类型的文件,在Windows下,我们可以统称它们为PE-COFF文件格式。在Linux 下,我们可以将它们统称为ELF文件。
不光是可执行文件(Windows的.exe 和 Linux下的ELF可执行文件)按照可执行文件格式存储。动态链接库(DLL,Dynamic Linking Library)( Windows的.dll和 Linux 的.so)及静态链接库(Static Linking Library)( Windows 的.lib和 Linux 的.a)文件都按照可执行文件格式存储。它们在 Windows下都按照 PE-COFF格式存储,Linux下按照ELF格式存储。静态链接库稍有不同,它是把很多目标文件捆绑在一起形成一个文件,再加上一些索引,你可以简单地把它理解为一个包含有很多目标文件的文件包.ELF文件标准里面把系统中采用ELF格式的文件归为如下表所列举的4类。
【文章转自韩国多ip站群服务器 http://www.558idc.com/krzq.html处的文章,转载请说明出处】