GCC編譯器驅動程序讀取源文件hello.c,並把它翻譯成一個可執行目標文件hello。可以分成四個階段,執行這四個階段的程序(預處理器,編譯器,彙編器和鏈接器)構成了編譯系統。
- 預處理階段 預處理器(CPP)根據#開頭的命令,告訴預處理器讀取頭文件內容並插入到程序文本中。得到了.i爲擴展名的程序。
- 編譯階段 編譯器(ccl)將hello.i翻譯成hello.s,它包含了一個彙編語言程序
- 彙編階段 彙編器(aa)將hello.s翻譯成機器語言指令,並將指令打包成“可重定位目標程序”的格式,保存到二進制文件hello.o中。
- 鏈接階段 把hello.o與已經單獨編譯好的目標文件(類似printf.o)相合並,鏈接器ld則負責合併。最終的結果hello則是一個可執行目標文件,可以被加載到內存中,由系統執行。