GCC編譯程式時的四個階段說明!

2021-06-03 17:52:02 字數 1005 閱讀 6972

在使用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 鏈結將多個位置無關的目標檔案合併成可執行檔案 可見組裝才是平台相關的,之前的操作都與平台無關,換句話說是編譯前端和編譯後端 乙個類的成...