在使用gcc進行程式的編譯時通常要經歷四個階段(通常指的是從源程式到可執行的二進位制**這整個過程),一些以hello.c為例來說明這四個階段。
hello.c
#includeint main()gcc的四個階段如下:
1.預處理階段
2.編譯階段
3.彙編階段
4.鏈結階段
四個階段的詳細資訊如下:
1.預處理階段
執行程式:cpp
作用:(1)展開源程式中定義的巨集。(2)在源程式中插入include所包含的檔案等
執行方法:gcc–e hello.c –o hello.i
執行結果:字尾名為.i的檔案,如hello.i
2.編譯階段
執行程式:ccl作用:檢查**的規範性、是否具有語法錯誤等,並把預處理的檔案編譯成可讀彙編**。
執行方法:gcc –s hello.i –o hello.s
執行結果:字尾名為.s的檔案,如hello.s
3.彙編階段
執行程式:as作用:把彙編階段生成.s檔案匯編成具體cpu上的目標**。
執行方法:gcc–c hello.s –o hello.o
執行結果:生成字尾為.o的檔案,如hello.o
4.鏈結階段
執行程式:ld
執行方法:gcc hello.o –o hello
執行結果:生成可執行的二進位制檔案,如hello
總結:
階段程式
gcc選項
輸入檔案
輸出檔案
預處理cpp
-e.c或者其他(hello.c)
.i(hello.i)
編譯ccl
-s.i(hello.i)
.s(hello.s)
彙編as
-c.s(hello.s)
.o(hello.o)
鏈結ld
無.o(hello.o)
gcc編譯的四個階段
gcc編譯的四個階段 如下圖 e preprocess only do not compile,assemble or link 只預處理,不會編譯 彙編 鏈結 s compile only do not assemble or link 只編譯,不會彙編 鏈結 c compile and asse...
GCC編譯的四個階段
gcc編譯流程分為4個步驟,分別為 預處理 pre processing 編譯 compiling 彙編 assembling 鏈結 linking 1 預處理階段 在該階段,編譯器將上述 中的stdio.h編譯進來,並且使用者可以使用gcc的選項 e 進行檢視,該選項的作用是把源 進行預處理。預處...
程式編譯的四個階段
預處理將標頭檔案展開,將巨集定義替換,生成符號檔案.s 編譯則包含了詞法檢查,語法檢查,許可權檢查,優化 組裝 將編譯後的 組裝成機器碼,形成位置無關的目標檔案 o 鏈結將多個位置無關的目標檔案合併成可執行檔案 可見組裝才是平台相關的,之前的操作都與平台無關,換句話說是編譯前端和編譯後端 乙個類的成...