C語言源程序通常是由編譯程序將其轉化為目標程序的。
C語言的編譯過程:
1、預處理:將存儲在不同文件的源程序(.c文件)聚合在一起,將語言中的宏進行替換,比如預處理指令#include,讓編譯器打開包含的文件,將其程序與其他程序融合在一起生成.i文件。
2、編譯:預處理源程序(.i文件)生成匯編程序(.s文件)
3、匯編(assember):將匯編程序轉換為可重定位的機器代碼,這一步產生目標文件(.obj或.o文件)。
4、鏈接(linker)/加載(loader):鏈接就是把目標文件和其他分別進行編譯生成的程序模塊及系統提供的標準庫函數連接在一起,生成可運行的可執行文件的過程,加載時將各代碼與數據定位到內存合適的位置,這一步產生最終的可執行文件。