搬磚於:子曰小玖
前言
本文主要講述如何安裝 C語言 編譯器——MinGW,特點是文章附有完整詳細的實際安裝過程截圖,文字反而起說明提示作用。
編寫本文的原因始於我的一個觀點:圖片可以比文字傳達更多的信息,也能讓其他人更容易理解作者的意圖及思想。因此,我將安裝 MinGW 的過程和步驟,編寫成了這篇以圖片為主的教程,為了讓看到這篇文章的任何人,都可以很容易按照圖片所示正確安裝 MinGW。
一、什么是 MinGW ?
MinGW 的全稱是:Minimalist GNU on Windows 。它實際上是將經典的開源 C語言 編譯器 GCC 移植到了 Windows 平台下,並且包含了 Win32API 和 MSYS,因此可以將源代碼編譯生成 Windows 下的可執行程序,又能如同在 Linux 平台下時,使用一些 Windows 不具備的開發工具。
一句話來概括:MinGW 就是 GCC 的 Windows 版本 。
二、為什么使用 MinGW ?
1. MinGW 是開源軟件,可以免費使用。
2. MinGW 由一個活躍的開源社區在持續維護,因此不會過時。
3. MinGW 支持最新的 C語言 標准。
4. MinGW 使用 Windows 的C語言運行庫,因此編譯出的程序不需要第三方 DLL ,可以直接在 Windows 下運行。
5. 那些著名的開源 IDE 實際只是將 MinGW 封裝了起來,使它擁有友好的圖形化界面,簡化了操作,但內部核心仍然是 MinGW。
MinGW 是穩定可靠的、持續更新的 C/C++ 編譯器,使用它可以免去很多麻煩,不用擔心跟不上時代,也不用擔心編譯器本身有嚴重漏洞,可以放心的去編寫程序。
三、MinGW 適合做什么?
對於熟悉 MinGW 的高手而言,它可以編譯任何 C語言 程序。但對於一般人來說,MinGW 太過簡陋,連圖形用戶界面都沒有。對於習慣使用鼠標的人來說,是很痛苦的。雖然也可以通過一些配置,讓 MinGW 擁有圖形用戶界面,但那個過程非常麻煩。
除此之外,編譯復雜的程序時,還需要你會編寫 Makefile ,否則只能一個文件一個文件的編譯,可想而知會多么辛苦。
但對於初學 C語言 的人來說,MinGW 是正合適的編譯器,至少黑色的命令提示符界面很有編程的氣氛,感覺很酷。在剛開始學 C語言 時,一般情況下所有代碼都寫在一個文件中,只要輸入幾個簡單的命令,就能用 MinGW 編譯成可執行文件。雖然 VS2013 等編譯器,只要點擊下鼠標就可以完成編譯,但它會自動生成一大堆工程文件,讓初學者摸不着頭腦。而 MinGW 則只會生成一個可執行文件。
如果對 MinGW 和 VS2013 等編譯器進行一下形容,那么 MinGW 是手動的,而 VS2013 等編譯器則是自動的。因此 MinGW 的編譯過程更加直觀容易理解,也比較適合C語言學習。
總而言之,對於一般人來說,MinGW 適合學習 C語言 時使用,真正工作還是用 VS2013 更好。當然如果您是在 Linux 下工作,那么Code::Blocks可能是一個選擇,不過最大的可能是您必須習慣使用 GCC 來編譯程序。
四、下載和安裝 MinGW
在開始安裝之前,請先確認您滿足以下幾個條件。
1.您的電腦已經連接到網絡。
2.您的電腦硬盤有500MB的剩余空間。
3.您現在有充足的時間。(受您當前網速的影響,安裝過程可能會花費1、2個小時以上的時間。)
如果您確認,您滿足了上述條件,那么就可以開始安裝 MinGW 了。
注意:教程中的圖片都是實際安裝時的原比例截圖,如果您看不清圖片中的提示語,可以將圖片放大,不會影響清晰度。具體做法是點擊圖片,將會進入到圖片的展示頁面,在展示圖片的左下角,有一個叫“原圖”的鏈接,點擊它即可。如果前面的方法失效,您仍然可以通過瀏覽器放大頁面的功能,放大圖片,例如在 Chrome 瀏覽器下,您可以按住 Ctrl 鍵,然后滾動鼠標滾輪,即可放大頁面。
1.MinGW官方網站首頁(http://www.mingw.org/)
MinGW 的官方網站地址是:http://www.mingw.org 。打開這個地址后,我們看到的就是 MinGW 的官方網站首頁面,在其中找到 Downloads 下載鏈接,單擊它進入 MinGW 的下載頁面。
注意:安裝MinGW的時候需要連接到網絡,並且下載量很大,如果您的網絡環境不是很好,很可能安裝失敗。
2.MinGW安裝管理器下載頁面
在 MinGW 的下載頁面中,我們只需單擊紅色線框中的 Download mingw-get-setup.exe (86.5kB) 鏈接,下載安裝程序即可,因為它總是最新的穩定版 MinGW。(當然如果您很了解 MinGW,也可以從橙色線框所示的目錄中手動下載各組件。)
注意:這里下載的只是 MinGW 安裝管理器的安裝程序,將 MinGW 安裝管理器正確安裝后,才能安裝 MinGW。請不要將安裝 MinGW 安裝管理器完成,誤認為 MinGW已經安裝完成了。
3.MinGW安裝管理器開始下載
彈出這個頁面之后,倒數5秒,瀏覽器將會自動下載 MinGW 安裝管理器的安裝程序。如果您的瀏覽器沒有自動開始下載,則可以點擊綠色線框中的 direct link 鏈接,手動開始下載。下載安裝程序的時間應該非常短,因為它只有不到100KB。
4.MinGW安裝管理器的安裝程序
雙擊運行 MinGW 安裝管理器的安裝程序。
MinGW 安裝管理器的安裝程序與Chrome、Adobe Flash Player的類似,是在線安裝程序,必須聯網才能正確安裝。它只相當於一個下載器,當其運行時,將會從 MinGW 的官方服務器上下載真正的 MinGW 安裝管理器。
5.MinGW安裝管理器的安裝程序——首頁
雙擊運行 MinGW 安裝管理器的安裝程序后,會首先顯示這個頁面,上面寫了一些 MinGW 安裝管理器的介紹,這里我們不用管它,直接單擊 Install 按鈕開始安裝。
注意:單擊 View Licence 按鈕可以查看軟件的許可協議,MinGW 是開源軟件,對於一般人來說,反正可以免費使用,至於具體條款,基本不需要在意。
6.MinGW安裝管理器的安裝程序——安裝選項頁
在這一步只需修改 MinGW 要安裝在哪個目錄,其他使用默認設置即可。
注意:安裝 MinGW 需要500MB左右的硬盤空間,確定您選擇的目錄所在的硬盤分區有足夠的剩余空間。
7.MinGW安裝管理器的安裝程序——管理器開始下載安裝
現在安裝程序已經正式開始下載並安裝 MinGW安裝管理器 了,在這個步驟里所花費的時間,決於您所在地區的網絡環境的好壞,一般來說並不會花費太長時間,在數分鍾范圍內即可完成。
8.MinGW安裝管理器的安裝程序——管理器下載安裝完成
現在 MinGW 安裝管理器已經安裝完成,我們可以開始正式安裝 MinGW 了。
9.MinGW安裝管理器的快捷方式
MinGW 安裝管理器安裝完成后,會在桌面創建一個快捷方式,以后只要雙擊它就可以啟動 MinGW 安裝管理器,管理已安裝的組件,或者添加安裝新的組件。
10.MinGW安裝管理器界面
這是 MinGW 安裝管理器的主界面,通過這里我們可以下載、安裝、管理 MinGW 和組件。
11.MinGW安裝管理器——界面介紹
一般來說,我們只需要一些基礎組件即可滿足我們編譯C/C++程序,所以選擇左側目錄中的第一項 Basic Setup 即可,之后我們就可以在右側選擇需要的組件了。
12.MinGW安裝管理器——查看組件
鼠標左鍵單擊需要的組件,即可在主界面右下側看到對於選擇中組件的詳細信息。
13.MinGW安裝管理器——單擊組件選框
然后在組件上單擊鼠標右鍵,再在彈出的右鍵菜單中單擊 Mark for Installation 選項,即可將組件進行標記。在之后的操作完成后,管理器將會自動安裝被標記了的組件。
14.MinGW安裝管理器——選中組件
如圖所示,將所需的4個組件全部標記。
因為我們只是為了編譯 C/C++ 程序,所以只需安裝 mingw-developer-toolkit、mingw32-base、mingw32-gcc-g++、msys-base 這4個組件即可。
15.MinGW安裝管理器——應用更改
在我們所需的4個組件都已標記完成后,單擊菜單欄上的 Installation 選項,並在彈出的菜單中單擊 Apply Changes 選項。
16.MinGW安裝管理器——確定安裝
彈出的這個是確認窗口,我們直接單擊 Apply 按鈕,之后安裝管理器就會真正的開始下載安裝 MinGW 了。
17.MinGW安裝管理器——開始下載安裝MinGW組件
MinGW 安裝管理器正在一邊下載一邊安裝 MinGW,在這一過程中,視乎您的網絡情況,可能會花費很長的時間。而且因為安裝管理器鏈接的是外國的服務器,也會導致下載速度緩慢,所以我們需要耐心的等待一段時間。
18.MinGW安裝管理器——MinGW安裝完成
現在 MinGW 已經下載安裝完成了,我們關閉這個窗口。
19.MinGW安裝管理器——檢查更新
這是 MinGW 安裝管理器自動檢測組件的更新情況,我們不用理會,直接關閉。
20.MinGW安裝管理器——已安裝的MinGW組件
在安裝管理器的主頁面中,我們已安裝的 MinGW 組件的前面的復選框會填充成綠色,我們以后可以根據它來管理 MinGW 的組件。
21.MinGW安裝目錄結構
至此 MinGW 已經安裝到了您的電腦中,但這時還無法使用它編譯 C/C++ 代碼,您需要對操作系統進行一些設置。
22.MinGW設置——屬性
我們這時回到電腦桌面上,找到 這台電腦(Windows 7 以前的系統叫 我的電腦) 的圖標,鼠標右擊打開菜單,單擊 屬性 選項,會打開 系統 窗口。
23.MinGW設置——高級系統設置
我們在系統窗口中用鼠標單擊頁面左側的 高級系統設置 選項,從而打開 系統屬性 窗口。
24.MinGW設置——系統屬性
在打開的系統屬性窗口中,我們單擊 高級 選項卡,切換到圖片所示的頁面,然后在用鼠標單擊 環境變量 按鈕。
25.MinGW設置——環境變量
拖動環境變量窗口下半部分的 系統變量 區域的滑塊,並找到 Path 這個變量,然后單擊選中它,點擊 編輯 按鈕。
26.MinGW設置——復制bin目錄地址
這時我們打開 MinGW 安裝目錄中的 bin 目錄,然后單擊地址欄,復制紅色線框中的地址。
27.MinGW設置——設置path
把我們剛復制的 bin 目錄的地址,粘貼在變量值輸入框里所有值的最末尾,並且一定要注意用 ; 分號將它們分隔開,最后單擊 確定 按鈕保存修改。
現在 MinGW 已經配置完成,我們可以啟動命令提示符測試一下了。
28.Win8啟動命令提示符
在 Windows 8 中啟動命令提示符。
29.命令提示符
現在我們開始測試 MinGW 是否安裝成功。在打開的命令提示符窗口中,輸入 gcc 這串字符,然后按鍵盤上的回車鍵(Enter)。
30.MinGW安裝成功
恭喜,如果出現了上圖所示的提示信息,則證明您的 MinGW 已經安裝成功,可以用它來編譯代碼了。
五、使用MinGW編譯代碼
MinGW 是命令行工具,沒有圖形用戶界面,全部操作靠在命令提示符中輸入命令來執行。對於習慣了鼠標和圖形用戶界面的人,這種操作方式會比較難以接受,可能會產生為什么沒有圖形用戶界面這種疑問。你可能在網上找到很多長篇大論,來向你解釋不那么做的理由,而在這里我簡單明了的告訴你,之所以沒有圖形用戶界面,是因為編寫一個圖形用戶界面非常麻煩,而大部分程序員都討厭麻煩,既然沒有圖形用戶界面也可以用,何必自找麻煩呢?將這些節省下來的時間,用在提升程序效率方面顯然更划算。
當然,世界上有很多 IDE ,它們有着漂亮的圖形用戶界面,而內置的編譯器就是 GCC ,如果你實在不想用命令行工具,也可以使用它們。
A.MinGW的gcc編譯命令
格式:gcc 源代碼文件的名字
示例:gcc hello.c
解釋:gcc 是 MinGW 內置的編譯命令,hello.c 則是我們要編譯的源代碼文件的名字。
注意:首先,gcc 命令和源代碼的文件名之間有一個空格。其次,文件名必須完整正確,不能省略后綴名。
因為 MinGW 本來就是將 GCC 移植到 Windows 上的產物,所以操作方式和 GCC 一樣,只是在 Linux 下命令是被鍵入到“終端”中,而 Windows 下則是被鍵入到“命令提示符”里。
B.創建hello.c源代碼文件
在用 gcc 命令編譯源代碼之前,我們首先要有一個存儲了C語言代碼的文件。C語言的源代碼文件其實就是普通的文本文件,唯一的區別就是后綴名不同,文本文件的后綴名是 .txt ,而C語言源代碼文件的后綴名是 .c 。
所以我們新建一個文本文件,名字可以任意取,我這里就將其命名為 hello ,現在文件的完整名字就是 hello.txt 了。之后我們只需要把 hello.txt 的后綴名 .txt 更改為 .c 后綴名,這樣就得到了C語言源代碼文件 hello.c 了。
C.在hello.c文件里編寫代碼
這里用 Windows 自帶的記事本或任意文本編輯器,將 hello.c 這個源代碼文件打開,然后將上圖所示的測試代碼鍵入到文件中,最后保存文件即可。現在測試用的源代碼文件已經准備完成,我們可以進行下一步的編譯了。
這段代碼是最基礎的 hello world 程序,會在屏幕上顯示 hello, world 這段文字。相信這是學編程的大多數人,入門時的第一個程序,所以這里也就不再贅述了。
D.將hello.c編譯成可執行文件
之前說過 MinGW 是命令行工具沒有圖形用戶界面,所以編譯操作需要在命令提示符中進行。
首先我們打開命令提示符,然后要將工作目錄定位到源代碼文件的存儲位置,這一步非常重要,沒有接觸過命令行工具的人,往往會在這里出錯。DOS 命令 cd 可以改變當前的工作目錄,具體做法是 cd 命令后面加上目標工作目錄,如上圖第三行,就是重新定位到 d 盤的 test 目錄下。使用完 cd 命令后,還要再鍵入一次定位到的目錄的地址,這樣才會轉移過去,但只需要鍵入盤符即可,並不需要鍵入完整地址,如上圖第四行。工作目錄重新定位后,如上圖第五行所示,工作目錄已經從 C:\Users\lenovo 更改為 d:\test 。
現在我們只需要執行 gcc hello.c 這行命令,就可以將源代碼編譯為可執行程序了。
E.hello.c編譯后的可執行程序
如上圖所示,a.exe 就是編譯后生成的可執行程序。因為我們編譯時沒有指定生成的程序名,所以 MinGW 默認將程序命名為 a ,加上后綴名就是 a.exe 了。如果我們想在編譯時就指定生成的程序名,就需要使用 gcc 命令的 -o 選項了。
F.MinGW編譯命令gcc的-o參數
格式:gcc 源代碼文件的名字 -o 編譯后程序的名字
示例:gcc hello.c -o hello.exe
解釋:gcc 這個命令擁有很多內置選項,其中 -o 表示將它后面的單詞設置編譯后文件的名字。
注意:選項 -o 是英文字母,並不是數字零,並且它的后面只能是想設置的文件名。
這種在編譯時命名的方法好像很雞肋,初看好像只是幫我們省了一些時間,畢竟我們也可以在編譯后手動改名。這種想法是因為我們的程序還很簡單,只有一個源代碼文件,也只會編譯出一個程序。當以后我們的程序變復雜了,可能會在一個工作目錄下編譯出復數個程序,這時就必須用 -o 選項了,否則編譯出的程序都叫 a.exe ,會在生成時互相覆蓋掉。
G.將hello.c編譯成名字是hello.exe的程序
同樣要先定位到我們在用的工作目錄下,然后執行 gcc hello.c -o hello.exe 這條命令,就會編譯生成一個名叫 hello.exe 的可執行文件了。
H.hello.c編譯后的hello.exe程序
執行完 gcc hello.c -o hello.exe 編譯命令后,會在工作目錄中生成 hello.exe 可執行程序,這就是我們得到的最終成果。
I.雙擊運行hello.exe程序
用鼠標雙擊運行編譯后的 hello.exe 程序,會啟動一個命令提示符窗口,並在里面顯示 hello, world 這幾個字符。這代表我們成功的完成了一次編譯,將那段C語言代碼編譯成了計算機可以執行的程序。
J.在命令提示符中運行hello.exe程序
想要運行編譯好的程序,並不是非要用鼠標雙擊程序啟動,也可在命令提示符中直接輸入編譯后的程序名稱,例如輸入 hello.exe ,也可以直接運行程序。甚至可以省略程序的后綴名,只需輸入 hello 即可,程序同樣會正確的運行。
K.使用 MinGW 的進階學習
上述只是簡單的編譯源代碼的方法,適用於單個或少量源代碼文件,如果是復雜的大型程序,要用到 makefile 來組織源代碼時,就需要 mingw32-make 命令了。
如果程序編譯或運行出錯,需要調試源代碼,則可以使用 gdb 命令,來幫助我們確定問題產生在哪里。
如果代碼沒有明顯的編譯錯誤,運行時也沒有邏輯錯誤,則在最終編譯為可發布版的程序時,我們還要考慮編譯優化的問題,以便生成的程序文件擁有更小的體積,和更高的運行效率。gcc 命令有 -00 、 -01 、 -02 、 -03 這幾個優化選項,其中 -00 是默認選項,意思是無優化,剩下的幾個選項隨數字的增大,優化程度也會逐漸增強。