目錄
本文將對以下程式使用 g++ 進行編譯,去講述 c++ 的編譯過程。
// hello.cpp
#include #define pi 3.14
int main()
shell 命令:
$ g++ -e hello.cpp -o hello.ii
預處理階段做了什麼呢?
預處理主要對預處理指令做出處理,例如對 #define 的替換,插入 #include 的標頭檔案等操作。可以看到我們定義的常量因為是預處理指令,被替換掉了:
shell 命令:
$ g++ -s hello.ii -o hello.s
編譯階段做了什麼呢?
編譯將預處理後的**檔案「翻譯」成組合語言的檔案shell 命令:
$ g++ -c hello.s -o hello.o
彙編階段做了什麼呢?
彙編將組合語言檔案「翻譯」成機器**的二進位制檔案shell 命令:
$ g++ -o hello.s -o hello.exe
鏈結階段做了什麼呢?
鏈結就是把每個源**獨立編譯後的結果,然後按照它們的要求將它們組裝起來,鏈結主要解決的是源**之間的相互依賴問題。
c編譯過程
編譯的概念 編譯程式讀取源程式 字元流 對之進行詞法和語法的分析,將高階語言指令轉換為功能等效的彙編 再由匯程式設計序轉換為機器語言,並且按照作業系統對可執行檔案格式的要求鏈結生成可執行程式。編譯的完整過程 c源程式 預編譯處理 c 編譯 優化程式 s asm 匯程式設計序 obj o a ko 鏈...
c 編譯過程
編譯過程主要分為 4個過程 1 編譯預處理 預編譯程式完成的工作,可以說成是對源程式的 替換 工作。經過這個過程,生成乙個沒有巨集定義 沒有條件編譯指令 沒有特殊符號的輸出檔案。2 編譯 優化階段 通過詞法分析 語法分析,在確認所有的指令都符合語法規則之後,將其翻譯成等價的中間 或彙編 在c 中,以...
C 編譯過程
以helloword.c 程式說明編譯過程 在預設的狀態下,如果我們直接以gcc編譯原始碼,並且沒有加上任何引數,則執行檔案的檔名會被自動設定為a.out 這個檔名。所以你就能夠直接執行 a.out這個這行檔案。hello.c 就是原始碼,gcc是編譯程式,a.out 是編譯成功的可執行檔案。如果我...