網友評分: 5.3分
GNU編譯器是一款非常強大并且好用的編程語言編譯器軟件,是一套以 GPL 及 LGPL許可證所發行的自由軟件,亦是自由的類Unix 及蘋果計算機 Mac OS X 操作系統的標準編譯器,它原本只能處理 C語言,但其很快地擴展,變得可處理 C++。之后也變得可處理 Fortran、Pascal、Objective-C、Java, 以及 Ada 與其他語言。
1、GNU編譯器以GPL及LGPL許可證所發行的自由軟件;
2、既能處理C語言,也能處理C++;
3、支持Fortran、Pascal、Objective-C、Java,以及Ada與其他語言;
4、gcc編譯器支持跨windows、mac、linux等平臺;
5、可以透支和保存文件;
6、可以解決一個共同的碰撞;
7、可以進行解析器的越界。
GNU的外部接口長得像一個標準的Unix編譯器。使用者在命令列下鍵入GNU之程序名,以及一些命令參數,以便決定每個輸入檔案使用的個別語言編譯器,并為輸出程序碼使用適合此硬件平臺的組合語言編譯器,并且選擇性地執行連接器以制造可執行的程序。每個語言編譯器都是獨立程序,此程序可處理輸入的原始碼,并輸出組合語言碼。
全部的語言編譯器都擁有共通的中介架構:一個前端解析符合此語言的原始碼,并產生一抽象語法樹,以及一翻譯此語法樹成為GNU的暫存器轉換語言〈RTL〉的后端。編譯器最佳化與靜態程序碼解析技術(例如FORTIFY_SOURCE,一個試圖發現緩沖區溢位〈buffer overflow〉的編譯器)在此階段應用于程序碼上。最后,適用于此硬件架構的組合語言程序碼以Jack Davidson與Chris Fraser發明的算法產出。幾乎全部的GNU都由C寫成,除了Ada前端大部分以Ada寫成。
GNU所遵循的部分約定規則:
.c為后綴的文件,C語言源代碼文件;
.a為后綴的文件,是由目標文件構成的檔案庫文件;
.C,.cc或.cxx 為后綴的文件,是C++源代碼文件且必須要經過預處理;
.h為后綴的文件,是程序所包含的頭文件;
.i 為后綴的文件,是C源代碼文件且不應該對其執行預處理;
.ii為后綴的文件,是C++源代碼文件且不應該對其執行預處理;
.m為后綴的文件,是Objective-C源代碼文件;
.mm為后綴的文件,是Objective-C++源代碼文件;
.o為后綴的文件,是編譯后的目標文件;
.s為后綴的文件,是匯編語言源代碼文件;
.S為后綴的文件,是經過預編譯的匯編語言源代碼文件。