(一)什么是目标文件
编译器编译源代码后生成的文件叫做目标文件,目标文件从结构上讲,它是已经编译后的可执行文件格式,只是还没有经过链接的过程,其中也有些符号或有些地址还没有被调整。其本身是按照可执行文件格式存储的,只是跟真正的可执行文件在结构上稍微有些不同。可执行文件格式涵盖了程序的编译、链接、装载和执行的各个方面。
(二)目标文件的格式
现在PC平台流行的可执行文件的格式主要是Windows下的PE和Linux下的ELF,它们都是COFF格式的变种。目标文件就是源代码编译后但未进行链接的那些中间文件。(Windows的 .obj 和 Linux下 .o)与可执行文件的内容结构相似一般采用一种格式存储(Windows的 PE_COFF文件格式 和 Linux下 ELF文件格式)。动态链接库(Windows的 .dll和 Linux下 .so)及静态链接库(Windows的 .lib 和 Linux下 .a)文件都是按照可执行文件存储。
ELF格式文件类型: