第二部分-目标文件

二、目标文件

1、目标文件:编译器编译源代码后生成的文件叫目标文件;

2、目标文件的格式:

1)现在PC平台流行的可执行文件(Executable)主要是Windows下的PE(Portable Executable)和Linux的ELF(Executable Linkable Format),他们都是COFF(Common file format)格式的变种。

2)目标文件就是源代码编译后但未进行链接的那些中间文件(windows的.obj和Linux下的.o),它跟可执行文件的内容和结构类似,所以一般跟可执行文件格式一起采用一种格式存储。

3)不光可执行文件(Windows下的.exe和Linux下的ELF可执行文件)按照可执行文件文件格式存储,动态链接库(DLL,Dynamic Linking Library)(Windows下的.dll和Linux下的.so)以及静态链接库(Static Linking Library)(Windows下的.lib和Linux的.a)文件都按照可执行文件格式存储。

3、目标文件内容

1)目标文件中的内容主要包括编译后的机器指令代码、数据以及链接时所需要的一些信息,如符号位、调试信息、字符串等;一般目标文件将这些信息以“节”或者“段”的形式存储,一般情况下,标识一个一定长度的区域;

2)源程序编译后的机器指令经常被存放字代码段(Code Section)里,代码段常见的名字有.text 或者.code,全局变量和局部静态变量数据经常放在数据段(Data Section),一般名字叫.data;.bss段只是为未初始化的全局变量和局部静态变量预留文职而已;

3)总体来说,程序源代码被编译后主要分成两段:程序指令和程序数据。代码段数据程序指令,二数据段和.bss段属于程序数据

你可能感兴趣的:(第二部分-目标文件)