GNU CC(簡稱爲gcc)是GNU項目中符合ANSI C標準的編譯系統,能夠編譯用C、C++和Object C等語言編寫的程序。gcc不僅功能強大,而且可以編譯如C、C++、Object C、Java、和Ada等多種語言,而且gcc又是一個交叉平臺編譯器,它能夠在當前CPU平臺上爲多種不同體系結構的硬件平臺開發軟件,因此尤其適合在嵌入式領域的開發編譯.
在一種計算機環境中運行的編譯程序,能編譯出在另外一種環境下運行的代碼,我們就稱這種編譯器支持交叉編譯。這個編譯過程就叫交叉編譯。 簡單地說,就是在一個平臺上生成另一個平臺上的可執行代碼。比如:在X86平臺上編譯的代碼在ARM平臺上也能運行。
GCC變異的四個階段包括
(1)預處理
(2)編譯
(3)彙編
(4)鏈接
預處理裏階段包括頭文件展開;宏替換;條件編譯include目錄中全部爲頭文件,由於程序中調用了頭文件,所以GCC編譯時頭文件中的內容加載到程序的首部。
在shell中輸入命令“gcc -E file.c -o file.i “,其中,參數E告訴gcc命令只進行預編譯,不做其他處理;參數o用來指明輸出的文件名爲file.i
編譯階段進行語法檢查;詞法分析。
在shell中輸入命令“gcc -c file.i -o file.s”,參數S告訴gcc命令只進行預編譯,不做其他處理;參數o用來指明輸出的文件名爲file.o
彙編階段生成彙編文件。
在shell中輸入命令“gcc -s file.c -o file.o”,參數c告訴gcc命令只進行預編譯,不做其他處理;參數o用來指明輸出的文件名爲file.s
鏈接階段把程序中所有的目標文件和所需的庫文件都鏈接在一起,生成一個可以直接運行的文件,即可執行文件。
在shell中輸入命令“gcc file.c -o file”,運行完畢後就會產生一個file的可執行文件,輸入命令“./file”執行文件,就可以得到運行結果。