gcc編譯器是款專業的c語言編輯工具,可用于c語言、c++、java、object-C等語言程序中去,支持交叉編譯器,交叉語言設計,提供交叉編譯環境,通過在命令列下鍵入一些命令參數,以便決定每個輸入命令使用的個別語言編譯器,讓你的編程更有效率。
1.GCC是用于Unix,Unix-like系統的編譯器。不過,現在Windows下也出現了GCC的穩定移植版。這要感謝Internet上眾多程序員的共同努力。
如今,在Windows下比較流行的GCC移植版主要有三個。他們是 MinGW,Cygwin和Djgpp。雖然,Djgpp是應用于DOS系統的,考慮到windows對2.DOS的兼容,所以也將Djgpp納入其中了。
3.總體來說,MinGW,Cygwin和Djgpp各有特色,針對不同的應用場合,可以選擇不同的移植版來滿足需要。MinGW這個系列的移植,主要方向是讓GCC的Windows移植版能使用Win32API來編程。而Cygwin的目標是能讓Unix-like下的程序代碼在Windows下直接被編譯。至于Djgpp,則是想讓DOS下也能用上GCC。
4.對于開發人員不同的需求。選擇合適的移植版會讓工作變得輕松而高效。
gcc編譯器軟件說明
GCC的外部接口長得像一個標準的Unix編譯器。使用者在命令列下鍵入gcc之程序名,以及一些命令參數,以便決定每個輸入檔案使用的個別語言編譯器,并為輸出程序碼使用適合此硬件平臺的組合語言編譯器,并且選擇性地執行連接器以制造可執行的程序。
每個語言編譯器都是獨立程序,此程序可處理輸入的原始碼,并輸出組合語言碼。全部的語言編譯器都擁有共通的中介架構:一個前端解析符合此語言的原始碼,并產生一抽象語法樹,以及一翻譯此語法樹成為GCC的暫存器轉換語言〈RTL〉的后端。編譯器與靜態程序碼解析技術(例如FORTIFY_SOURCE,一個試圖發現緩沖區溢位〈buffer overflow〉的編譯器)在此階段應用于程序碼上。最后,適用于此硬件架構的組合語言程序碼以Jack Davidson與Chris Fraser發明的算法產出。
幾乎全部的GCC都由C寫成,除了Ada前端大部分以Ada寫成。
前端接口
前端的功能在于產生一個可讓后端處理之語法樹。此語法解析器是手寫之遞歸語法解析器。
直到2004年,程序的語法樹結構尚無法與欲產出的處理器架構脫鉤。而語法樹的規則有時在不同的語言前端也不一樣,有些前端會提供它們特別的語法樹規則。
在2005年,兩種與語言脫鉤的新型態語法樹納入GCC中。它們稱為GENERIC與GIMPLE。語法解析變成產生與語言相關的暫時語法樹,再將它們轉成GENERIC。之后再使用"gimplifier"技術降低GENERIC的復雜結構,成為一較簡單的靜態形式(Static Single Assignment form,SSA)基礎的GIMPLE形式。此形式是一個與語言和處理器架構脫鉤的全域通用語言,適用于大多數的現代編程語言。
中介接口
一般編譯器作者會將語法樹放在前端,但其實此步驟并不看語言的種類而有不同,且不需要用到語法解析器。因此GCC作者們將此步驟歸入通稱為中介階段的部分里。此類包括消解死碼、消解重復運算與全域數值重編碼等。
后端接口
GCC后端的行為因不同的前處理器宏和特定架構的功能而不同,例如不同的字符尺寸、呼叫方式與大小尾序等。后端接口的前半部利用這些訊息決定其RTL的生成形式,因此雖然GCC的RTL理論上不受處理器影響,但在此階段其抽象指令已被轉換成目標架構的格式。
GCC的技巧依其釋出版本而有很大不同,但都包含了標準的算法,RTL由于可用的情形較少,且缺乏較高階的資訊,因此相比較起來,增加的GIMPLE語法樹形式,便顯得比較不重要。
后端經由一次重讀取步驟后,利用描述目標處理器的指令集時所取得的信息,將抽象暫存器替換成處理器的真實暫存器。此階段非常復雜,因為它必須關注所有GCC可移植平臺的處理器指令集的規格與技術細節。
后端的最后步驟相當公式化,僅僅將前一階段得到的匯編語言代碼藉由簡單的子例程轉換其暫存器與內存位置成相對應的機器碼。
1.安裝了MinGW,在其根目錄下的bin文件夾中發現有 為了測試,我在該文件夾中新建了一個test.bat文件,將其中內容寫為:gcc test.cpp 2.然后在該文件夾中創建test.cpp文件并將其內容設置為: 3.雙擊test.bat文件,發現該文件夾中產生了一個a.exe文件,執行該exe文件,發現其與預期編譯效果一致,說明編譯成功。 4.可以生成名為name.exe的可執行程序。 5.把指令改為gcc –e test.cpp >test.txt 后,提示錯誤 6.而把參數E改為大寫之后問題即解決: gcc –E test.cpp > test.txt
騰訊視頻官方版 | 45.34MB
愛奇藝視頻官方正式版 | 35.10MB
暴風影音最新版下載 | 50.3MB
酷狗音樂2022下載 | 37MB