1GCC編譯器簡介
GCC編譯器(GNU C Compiler)是GNU開發(fā)的一款多平臺編譯器,根據(jù)名字GCC是一款編譯C程序的編譯器。但隨著該編譯器的擴展逐漸支持多平臺、多語言的編譯套件(GUN Compiler Colloction )。
2什么是編譯器
編譯器并不是什么高級的東西,僅僅只是一個根據(jù)相應(yīng)平臺要求把用戶所編寫的代碼刪除、修改、翻譯等等處理后生成對應(yīng)的可執(zhí)行文件的一種軟件程序,其本質(zhì)也是屬于軟件,所以大家可以把編譯器看成一個翻譯軟件。
3交叉編譯器
在嵌入式Linux開發(fā)過程中,比如我們開發(fā)ARM平臺上的運行程序,一般會在windows平臺上進行代碼的編譯并生成對應(yīng)的可執(zhí)行文件燒錄到對應(yīng)的平臺中運行,然而這個時候使用編譯器就是交叉編譯器。
4為何需使用交叉編譯
嵌入式相比計算機最大的區(qū)別個人覺得在于資源分配上,相對而言嵌入式平臺的運行速度、內(nèi)存大小等等都比計算機平臺小很多,既然編譯器也是軟件那就需要占用一定的資源,隨著編譯器的擴展需要的硬件平臺要求也提高了,所以一般的嵌入式平臺難以滿足編譯要求,不過對于資源豐富,性能強勁的平臺當然另當別論了。
所以為了滿足在PC上就可以開發(fā)嵌入式軟件就有了前面所提到的交叉編譯環(huán)境,編譯器可以通過被指定所要運行的目標平臺來對相應(yīng)程序進行編譯生成目標平臺的可執(zhí)行文件,當然此時所生成的可執(zhí)行文件不可在當前環(huán)境下運行。
5編譯的基本流程
既然學習Linux應(yīng)用編程,那么必定需要將平時所編寫的程序通過編譯器最終生成可執(zhí)行文件,下面大致看看GCC如何編譯程序的:
編譯過程解析
1)預處理階段:主要對源文件進行文件包含和預處理語句的分析處理;
2)編譯階段:把預處理完的.i文件進行一系列詞法分析、語法分析、語義分析以及優(yōu)化后生成相應(yīng)的匯編代碼文件;
3)匯編階段:使用匯編器將匯編代碼轉(zhuǎn)換成機器可以執(zhí)行的指令并生成.o文件;
4)鏈接階段:使用鏈接器把所有的目標文件和庫文件鏈接起來放在合適的位置生成.out可執(zhí)行文件。
6簡單體驗一下GCC
下面小哥就簡單的在ubuntu下面寫了一個.c程序并使用gcc編譯運行,其實與我們平時在windows環(huán)境中編譯運行類似,僅僅只是把windows點擊按鈕換成了對應(yīng)的命令行罷了。