二拴驮、目標(biāo)文件
1碍舍、目標(biāo)文件:編譯器編譯源代碼后生成的文件叫目標(biāo)文件嗜湃;
2戳吝、目標(biāo)文件的格式:
1)現(xiàn)在PC平臺流行的可執(zhí)行文件(Executable)主要是Windows下的PE(Portable Executable)和Linux的ELF(Executable Linkable Format),他們都是COFF(Common file format)格式的變種。
2)目標(biāo)文件就是源代碼編譯后但未進(jìn)行鏈接的那些中間文件(windows的.obj和Linux下的.o)谴麦,它跟可執(zhí)行文件的內(nèi)容和結(jié)構(gòu)類似蠢沿,所以一般跟可執(zhí)行文件格式一起采用一種格式存儲。
3)不光可執(zhí)行文件(Windows下的.exe和Linux下的ELF可執(zhí)行文件)按照可執(zhí)行文件文件格式存儲匾效,動態(tài)鏈接庫(DLL,Dynamic Linking Library)(Windows下的.dll和Linux下的.so)以及靜態(tài)鏈接庫(Static Linking Library)(Windows下的.lib和Linux的.a)文件都按照可執(zhí)行文件格式存儲舷蟀。
3、目標(biāo)文件內(nèi)容
1)目標(biāo)文件中的內(nèi)容主要包括編譯后的機(jī)器指令代碼面哼、數(shù)據(jù)以及鏈接時所需要的一些信息野宜,如符號位、調(diào)試信息精绎、字符串等速缨;一般目標(biāo)文件將這些信息以“節(jié)”或者“段”的形式存儲锌妻,一般情況下代乃,標(biāo)識一個一定長度的區(qū)域;
2)源程序編譯后的機(jī)器指令經(jīng)常被存放字代碼段(Code Section)里仿粹,代碼段常見的名字有.text 或者.code,全局變量和局部靜態(tài)變量數(shù)據(jù)經(jīng)常放在數(shù)據(jù)段(Data Section)搁吓,一般名字叫.data;.bss段只是為未初始化的全局變量和局部靜態(tài)變量預(yù)留文職而已吭历;
3)總體來說堕仔,程序源代碼被編譯后主要分成兩段:程序指令和程序數(shù)據(jù)。代碼段數(shù)據(jù)程序指令晌区,二數(shù)據(jù)段和.bss段屬于程序數(shù)據(jù)