參考部落格:
c原始檔到可執行檔案共經歷了4個過程。包括預處理、編譯、彙編、鏈結。為了方便好記,可以採用記錄單條編譯命令的方式,這樣可以把命令也一起記下來。比如(esco)。
# gcc -e hello.c > hello.i
編譯器將hello.c預處理結果輸出 hello.i 檔案。這是我本地的hello.c的預處理檔案,可以大致看一下:
下面還有非常多內容,我直接截圖到最底部:
-s 編譯到組合語言,不進行彙編和鏈結編譯器將預處理結果檔案hello.i翻譯成彙編**hello.s
在編譯過程中,編譯器主要作語法檢查和詞法分析。在確認所有指令都符合語法規則之後,將其翻譯成等價的中間**或者是彙編**。hello.s內容如下:
-c 編譯、彙編到目標**,不進行鏈結這裡面就是可執行**了:編譯器將main.s檔案轉化為main.o 檔案。
彙編階段是把編譯階段生成的」.s」檔案轉成二進位制目標**
編譯器將hello.o鏈結成最終可執行檔案hello.exe下面就可以執行./hello.exe了。關於g 和gcc的一些誤區
關於g 和gcc的誤區 1 認為g 只能編譯c gcc只能編譯c其實,都可以的,但應該注意 a.c檔案g 把它當成c 程式,gcc當成c程式 cpp檔案 都認為是c 程式,c 是c的超集 b.編譯階段g 會呼叫gcc,對於c 檔案,兩者是等價的,但gcc不能自動和c 的庫鏈結,只能使用g 2 gcc...
gcc一些命令
檢視版本用 v 預處理 gcc e hello.c o hello.i o是指生成的檔案叫什麼,這裡是叫hello.i gcc一部生成目標檔案 gcc c hello.c o hello.o gcc生成可執行程式 鏈結 gcc hello.0 o hello 用來注釋很方便 if 0或1 以 end...
gcc 的一些用法
gcc編譯多個原始檔 一.常用編譯命令選項 假設源程式檔名為test.c。3.選項 e 用法 gcc e test.c o test.i 作用 將test.c預處理輸出test.i檔案。4.選項 s 用法 gcc s test.i 作用 將預處理輸出檔案test.i彙編成test.s檔案。5.選項 ...