久聞gcc的大名,早就想自己動手搭建一個Windows下的gcc開發環境,可以學學編譯命令,也可以在想測試一段簡單的代碼是否正確時不用打開龐大的Visual Studio或VC6.0。而gcc原本是在Linux系統下的編譯器,若要在Windows下使用需要MinGW的幫助。MinGW是一個開源項目,目的就是打造一個原生Windows下最小的gcc開發環境。
MinGW, a contraction of "Minimalist GNU for Windows", is a minimalist development environment for native Microsoft Windows applications.
所以我們這里所用到的所有軟件,包括gcc編譯器本身,都需要從MinGW官網上下載。下面就一步步介紹怎樣搭建這個gcc的開發環境。文章末尾提供最終配置好的MinGW打包下載。
*Jan 8, 2013 更新:可解壓到任意路徑運行(路徑不包含空格)
【@.1 軟件准備】
一. 使用官方自動下載程序
@->MinGW官網提供了一種自動在線下載安裝的gui小程序,可以在這里下載。這個程序只需要簡單的一步步跟着提示,就會自動下載每個組件的最新版本並且安裝在電腦里面。但麻煩的是,我用這個程序下載時,下載時間長,而且老是下載失敗。所以逼着我硬着頭皮看采用手動下載單個組件再組裝起來的方法(其實也不難)。所以采用這種方法的話這里就不重復了。
二.手動下載組件
@->到MinGW官網的這個頁面 HOWTO Install the MinGW (GCC) Compiler Suite,往下稍微拉一拉就可以看到詳細的下載組件說明。需要注意的是,各個組件都有各自的版本要求,所以我並不推薦到MinGW的sourceforge下載頁面自己下載各個組件然后配置,當然如果你有時間的話可以研究下每個組件的版本要求然后自己下載最新版本的組件進行更新,如果自己搞了半天把組件下載下來了MinGW不能用那就有的抓狂了。
@->還是剛才那個 HOWTO Install ... 頁面,下面的Manual Install一段就是我們需要的組件。首先下載下面幾個組件,注意左右藍色的鏈接都要下載,包括dev和dll,這里共計20個壓縮包。↓
@->往下看是gcc編譯器的核心下載選擇。注意到下載時已經下載了C編譯器核gcc,之后可以再選擇下載gcc-g++和gcc-objc就可以編寫C++和Objective C了。你也可以下載其他編譯器玩玩,我下載Objective C就是想看看蘋果御用的這個語言怎么怎么樣,雖然到現在也沒時間研究。要注意的是,這里的所有gcc編譯器都不一定是GNU官網放出的最新版本,但是鑒於如果自己上GNU下載了最新版后,還要研究怎么用MinGW的一套方法進行重新編譯,再融合到自己的組件中,所以我這里放棄了。不過目前MinGW這里提供的gcc是4.6.x版本,還是比較新的,對於個人編程來說足夠了。這里的bin和dll都要下載,共計4個壓縮包。↓
@->再往下,可選擇一些擴展功能組件。這里我選擇了前四條。第一條是debug時可以用,不過目前我覺得在命令行里面手動寫在哪里設置斷點比較不習慣,還是留給日后Eclipse配置時用吧。第二條是可以使用make命令,可以學習下makefile的編寫。第三條MinGW-Utilities提供了一組實用工具。第四條是大名鼎鼎的MSYS,可以在Windows下打開一個命令窗口用Linux命令進行一些列操作。最后一項我沒下載。共計4個壓縮包加1個可執行文件(MSYS)↓
@->最后再下載一個documentation就結束了,方便查看一些手冊。↓
@->最終的文件載共計30個,將他們放在同一個文件夾下。組件是多了點,我提供了一個包含這原始的30個組件的壓縮包單獨下載,可以對比一下。注意到這里還沒結束,接下來還需要進行解壓和配置工作。
【@.2 組件配置】
@->下載好的組件一共29個壓縮包和1個可執行文件(MSYS),解壓這29個組件到同一個文件夾。這里我推薦用7-zip解壓,若使用WinZip的話可能不能同時解壓一些文件。這里解壓需要兩次,都解壓到同一個文件夾即可。若解壓過程中提示有重復文件,選擇直接覆蓋所有即可。解壓好的最終文件如下圖↓
@->編譯器在mingw32\bin下面,所以這時只需在系統環境變量PATH中添加其路徑即可,不過這並不是我所建議的方法,如果只需要一個小的開發環境,可以不必向系統變量里面添加一條新路徑。當然日后若要用Eclipse配置使用gcc時的時候需要設置系統變量。不過那是后話。
*Jan 8, 2013 更新:可解壓到任意路徑運行(路徑不包含空格),所以下面方法可能過時,下載文末壓縮包可對比。
@->在C盤根目錄下新建一個MinGW文件夾,將之前解壓得到的文件拷貝到C:\MinGW下。在MinGW下新建文件夾"solutions_apo",之后在MinGW下新建一個批處理文件'_Start_apo.bat',寫入下列內容:
@echo off REM REM *** Written by Apollius; Oct.19 2012 *** REM *** Set environment. Functional only in current cmd window *** set PATH=C:\MinGW\bin;%PATH% cd C:\MinGW\solutions_apo echo ************************************************* echo * -GCC ENVIROMENT SET SUCCESSFULLY!- * echo ************************************************* REM *** END ***
保存后,在MinGW目錄下新建一個快捷方式,在鍵入項目的位置中輸入以下內容:
%SystemRoot%\system32\cmd.exe /K C:\MinGW\_Start_apo.bat
下一步,名字取為'Start_apo.exe',保存↓
這樣,每次想使用gcc時,只需單擊'Start_apo.exe',就可以將gcc編譯器的路徑暫時存到系統PATH里面,當推出這個cmd窗口時會自動清除系統路徑信息。
@->'solutions_apo'文件夾里可以放置我們的工程文件。下面我們來實驗一個hello world程序。'solutions_apo'目錄下新建一個hello_world文件夾,在其中新建一個main.c,寫入如下代碼:
#include <stdio.h> int main(int argc, char **argv) { printf("***************************\n"); printf("* Hello MinGW! *\n"); printf("* apollius *\n"); printf("***************************\n"); return (0); }
保存退出。回到剛才MinGW文件夾下,雙擊'Start_apo.exe',依次鍵入以下內容:
cd hello_world
gcc -o fin.exe main.c
則gcc可以編譯。如果設置沒有問題,將會稍微停頓一會兒重新顯示命令行提示。之后鍵入
fin
即可看到打印出來的文字了↓
好了,是不是很簡單,不需要建立復雜龐大的工程文件夾,只需要一步步自己手動添加文件即可。
@->最后,提供一個最終建立好的工程文件打包下載見文章末尾,下載好后解壓到C盤根目錄。按照前面的步驟,若想放在其他目錄下的話需要自己更改'_Start_apo.bat'文件中下面語句
set PATH=C:\MinGW\bin;%PATH%
改為自己對應目錄。
*Jan 8, 2013 更新:可解壓到任意路徑運行(路徑不包含空格),所以這里可不用修改
並且將Start_apo.exe快捷方式的屬性修改為你_Start_apo.bat'所在目錄。當然這也是這個方法比較麻煩的地方,如果有更好的方案能解決這個問題讓放到任何路徑都可以用的話也歡迎跟我交流(我的更新已經實現了)。
@->最后,你可以嘗試自己編寫makefile來建立一個自己的工程,當工程項目比較多,所包含頭文件、庫文件、源文件比較多時必須得編寫makefile來組織編譯鏈接過程了。不過,當工程比較大時我寧可用Eclipse來調用這個gcc進行項目編寫。這也是我的另一篇博文討論的內容。
【@.附件下載】
*Jan 8, 2013 更新:可解壓到任意路徑運行(路徑不包含空格),雙擊壓縮包內Launch.bat即可
@->MinGW_20130109.7z *解壓放在任意目錄 *無需設置系統環境變量PATH
@.[FIN] @.date->Nov 21, 2012 @.author->apollius