C語(yǔ)言程序的執(zhí)行步驟如下:
預(yù)處理:預(yù)處理器根據(jù)預(yù)處理指令(例如#include和#define)處理源代碼文件,并生成預(yù)處理后的文件。預(yù)處理器將頭文件插入到源文件中,展開(kāi)宏定義,并刪除注釋。
編譯:編譯器將預(yù)處理后的文件轉(zhuǎn)換為匯編語(yǔ)言代碼。它將源代碼轉(zhuǎn)化為機(jī)器可讀的指令序列,即匯編代碼。
匯編:匯編器將匯編語(yǔ)言代碼翻譯成機(jī)器語(yǔ)言指令(二進(jìn)制代碼),生成目標(biāo)文件。目標(biāo)文件是一種二進(jìn)制文件,包含了可執(zhí)行程序的機(jī)器語(yǔ)言指令。
鏈接:鏈接器將目標(biāo)文件與其他依賴的目標(biāo)文件以及庫(kù)文件進(jìn)行鏈接,生成最終的可執(zhí)行程序。鏈接器解決了符號(hào)引用問(wèn)題,將不同目標(biāo)文件中的符號(hào)引用鏈接到符號(hào)定義的位置。
加載:操作系統(tǒng)將可執(zhí)行程序從磁盤加載到內(nèi)存中。
執(zhí)行:處理器按照指令的順序執(zhí)行內(nèi)存中的機(jī)器語(yǔ)言代碼,完成程序的運(yùn)行。