GCC或者G++由源文件生成可執行文件的過程,可以分為4個階段:預處理,編譯,匯編,連接。
在功能上,預處理,編譯,匯編是三個不同的階段,但是GCC實際操作上把它合並為一個步驟來執行。
下面來說明:
(1)預處理階段
這個階段主要是處理源文件中的#ifdef,#include,#define等命令。該階段會生成一個中間文件*.i,我們
可以用如下命令來生成這種文件(以Hello.c文件為例):
gcc -E Hello.c -o Hello.i
經過了預處理階段,打開Hello.i文件就會發現所有的諸如#define等定義的常量都被真實數字替換掉了。
(2)編譯
在編譯階段,是把預處理階段的Hello.i文件生成匯編語言文件Hello.s,那麼可以用如下命令:
gcc -S Hello.i -o Hello.s
我們打開Hello.s文件,然後會發現裡面全是Hello.c源文件對應的匯編代碼了。
(3)匯編
在匯編階段,是把編譯階段生成的匯編語言文件Hello.s生成機器語言文件Hello.o。
gcc -C Hello.s -o Hello.o
這樣我們就生成了機器語言文件Hello.o了。
(4)連接
在最後的連接階段,是將匯編階段生成的機器語言文件Hello.o匯集成一個可執行的二進制代碼文件。
gcc Hello.o -o Hello
從上面可以看出,在gcc工作過程中,Hello.c文件的經過為:Hello.c -> Hello.i -> Hello.s -> Hello.o -> Hello.
Ubuntu 12.04嵌入式交叉編譯環境arm-linux-GCC搭建過程圖解 http://www.linuxidc.com/Linux/2013-06/85902.htm
Ubuntu 12.10安裝交叉編譯器arm-none-linux-gnueabi-GCC http://www.linuxidc.com/Linux/2013-03/82016.htm
Ubuntu下Vim+GCC+GDB安裝及使用 http://www.linuxidc.com/Linux/2013-01/78159.htm
Ubuntu下兩個GCC版本切換 http://www.linuxidc.com/Linux/2012-10/72284.htm
GCC 的詳細介紹:請點這裡
GCC 的下載地址:請點這裡