MinGW-w64安裝教程——著名C/C++編譯器GCC的Windows版本


MinGW-w64安裝教程——著名C/C++編譯器GCC的Windows版本

本文主要講述如何安裝 C語言 編譯器——MinGW-w64,特點是文章附有完整詳細的實際安裝過程截圖,文字反而起說明提示作用。
編寫本文的原因始於我的一個觀點:圖片可以比文字傳達更多的信息,也能讓其他人更容易理解作者的意圖及思想。因此,我將安裝 MinGW-w64 的過程和步驟,編寫成了這篇以圖片為主的教程,為了讓看到這篇文章的任何人,都可以很容易按照圖片所示正確安裝 MinGW-w64。
我希望寫出一篇即使是⑨也可以看懂的 MinGW-w64 安裝教程。

一、什么是 MinGW-w64 ?
MinGW 的全稱是:Minimalist GNU on Windows 。它實際上是將經典的開源 C語言 編譯器 GCC 移植到了 Windows 平台下,並且包含了 Win32API ,因此可以將源代碼編譯為可在 Windows 中運行的可執行程序。而且還可以使用一些 Windows 不具備的,Linux平台下的開發工具。一句話來概括:MinGW 就是 GCC 的 Windows 版本 。
以上是 MinGW 的介紹,MinGW-w64 與 MinGW 的區別在於 MinGW 只能編譯生成32位可執行程序,而 MinGW-w64 則可以編譯生成 64位 或 32位 可執行程序。
正因為如此,MinGW 現已被 MinGW-w64 所取代,且 MinGW 也早已停止了更新,內置的 GCC 停滯在了 4.8.1 版本,而 MinGW-w64 內置的 GCC 則更新到了 6.2.0 版本。

二、為什么使用 MinGW-w64 ?
1. MinGW-w64 是開源軟件,可以免費使用。
2. MinGW-w64 由一個活躍的開源社區在持續維護,因此不會過時。
3. MinGW-w64 支持最新的 C語言 標准。
4. MinGW-w64 使用 Windows 的C語言運行庫,因此編譯出的程序不需要第三方 DLL ,可以直接在 Windows 下運行。
5. 那些著名的開源 IDE 實際只是將 MinGW-w64 封裝了起來,使它擁有友好的圖形化界面,簡化了操作,但內部核心仍然是 MinGW-w64。
MinGW-w64 是穩定可靠的、持續更新的 C/C++ 編譯器,使用它可以免去很多麻煩,不用擔心跟不上時代,也不用擔心編譯器本身有bug,可以放心的去編寫程序。

三、MinGW-w64 適合做什么?
對於熟悉 MinGW-w64 的高手而言,它可以編譯任何 C語言 程序。但對於一般人來說,MinGW-w64 太過簡陋,連圖形用戶界面都沒有。這讓習慣使用鼠標的人,感到很痛苦。雖然也可以通過一些配置,讓 MinGW-w64 擁有圖形用戶界面,但那個過程非常麻煩。
除此之外,編譯復雜的程序時,還需要你會編寫 Makefile ,否則只能一個文件一個文件的編譯,可想而知會多么辛苦。
但對於初學 C語言 的人來說,MinGW-w64 是正合適的編譯器,至少黑色的命令提示符界面很有編程的氣氛,感覺很酷。
在剛開始學 C語言 時,所有代碼通常都寫在一個文件中,只要輸入幾個簡單的命令,就能用 MinGW-w64 編譯成可執行文件。雖然 VS2015 等編譯器,只要點擊下鼠標就可以完成編譯,但它會自動生成一大堆工程文件,讓初學者摸不着頭腦。而 MinGW-w64 則只會生成一個可執行文件。
如果對 MinGW-w64 和 VS2015 等編譯器進行一下形容,那么 MinGW-w64 是手動的,而 VS2015 等編譯器則是自動的。因此 MinGW-w64 的編譯過程更加直觀容易理解,也比較適合C語言學習。
總而言之,對於一般人來說,MinGW-w64 適合學習 C語言 時使用,真正工作還是用 VS2015 更好。當然如果您是在 Linux 下工作,那么Code::Blocks可能是一個選擇,不過最大的可能是您必須習慣使用 GCC 來編譯程序。

四、下載和安裝 MinGW-w64
在開始安裝之前,請先確認您滿足以下幾個條件。
1.您的電腦已經連接到網絡。
2.您的電腦硬盤有500MB的剩余空間。
3.您現在有充足的時間。(受您當前網速的影響,安裝過程可能會花費10幾分鍾或1個小時以上的時間。)
如果您確認,您滿足了上述條件,那么就可以開始安裝 MinGW-w64 了。
注意:教程中的圖片都是實際安裝時的原比例截圖,如果您看不清圖片中的提示語,可以將圖片放大,不會影響清晰度。想要觀看大圖,只需點擊圖片,就會跳轉到原始尺寸的圖片頁面中。如果前面的方法失效,您仍然可以通過瀏覽器放大頁面的功能,放大圖片,例如在 Chrome 瀏覽器下,您可以按住 Ctrl 鍵,然后滾動鼠標滾輪,即可放大頁面。

1.MinGW-w64官方網站首頁mingw-w64.org/

 


說明:MinGW-w64 官方網站的地址是:mingw-w64.org ,首頁樣式如上圖所示。
操作:點擊紅框中的“Downloads”超鏈接,進入 MinGW-w64 下載詳情頁面。

2.MinGW-w64下載詳情頁面

 

 


說明:這是 MinGW-w64 的下載詳情頁面。首先看到一個標題為 Pre-built toolchains and packages 的列表,這里面是包含 MinGW-w64 及特定工具的整合包。我們這個教程只安裝 MinGW-w64 ,所以只需下載 MinGW-w64 即可。
操作:點擊紅框中的“SourceForge”超鏈接,就會進入 SourceForge 中的 MinGW-w64 下載頁面。

3.SourceForge 中的 MinGW-w64 下載頁面

 

 


說明:MinGW-w64 的代碼和可執行文件被托管存儲在 SourceForge 上,在這個頁面上就可以直接下載 MinGW-w64 了。MinGW-w64 是非常復雜的,編譯器大多都是如此,為了適應各種操作系統,它們的組件會存在各種不同的版本,以適應不同的環境。所以,我們直接下載 MinGW-w64 的安裝程序,它會按照我們的需要,自動下載適合的組件,並將它們組織在一起。
操作:點擊紅框中的“Download mingw-w64-install.exe”超鏈接,將會下載這個 MinGW-w64 自動安裝的程序。

4.等待 MinGW-w64 安裝程序開始下載


說明:5秒鍾之后,瀏覽器會自動下載 mingw-w64-install.exe 。
操作:只需等待。
注意:如果瀏覽器沒有自動下載,則可以點擊黃框中的“direct link”超鏈接,手動下載。如果下載速度非常慢,可以點擊綠框中的“mirror”超鏈接,選擇一個離自己近的鏡像網站,可能會獲得較高(無法保證)的下載速度。

5.正在下載 mingw-w64-intall.exe

 

 


說明:如果你的瀏覽器是 chrome ,那么在瀏覽器下部,會出現這樣一個下載標簽。
操作:只需等待。

6.MinGW-w64 安裝程序

 

 


說明:這就是 MinGW-w64 的安裝程序。它本質上是一個下載程序,會根據我們之后的一些設置,選擇性的下載相應的組件,並將它們組織在一起。所以,運行前要確定網絡通暢,而且你有足夠的時間,因為根據你的網速,它可能需要花費一定的時間來下載。
操作:用鼠標雙擊運行 mingw-w64-install.exe 。
注意:如果出現無法運行,或者安裝出錯,你可以右鍵點擊它,並在彈出窗口中選擇“以管理員身份運行”選項,重新運行 mingw-w64-install.exe ,基本可以解決大部分問題。

7.MinGW-w64 安裝程序歡迎界面

 

 


說明:歡迎使用 MinGW-w64 在線安裝程序。
操作:點擊紅框中的 “Next” 按鈕,將會進入下一步安裝步驟。

8.從服務器獲取 MinGW-w64 文件信息

 

 


說明:這里程序正在鏈接服務器,以便獲取存儲在倉庫中的 MinGW-w64 的文件明細。
操作:只需等待。

9.MinGW-w64 版本選擇

 

 


說明:在這個界面,你可以根據所要搭建的開發環境,選擇不同的選項,從而下載所需的組件。
操作:選擇 Version、Architecture、Threads、Exception、Build revision 下拉列表中適當的選項,接下來將會詳細介紹這些選項。

10.選擇 gcc 版本

 

 


說明:Version 指的是 gcc 的版本,如果沒有特殊的需求,一般選擇最高的版本號即可。
操作:在這個版本中,最高版本是 6.2.0 ,選中它即可。

11.選擇電腦系統架構

 

 


說明:Architecture 是指電腦系統是 32位 還是 64位,根據你的電腦系統做出對應選擇。
操作:我的電腦系統是 64位 的,所以我選擇了 x86_64,如果你是 32位 系統,則選擇 i686 即可。

12.選擇操作系統接口協議

 

 


說明:這個世界上只有兩種操作系統,符合 posix 協議的,和 Windows 。如這個笑話所說的,如果你想要開發 Windows 程序,需要選擇 win32 ,而開發 Linux、Unix、Mac OS 等其他操作系統下的程序,則需要選擇 posix 。
操作:我只開發在 Windows 下運行的程序,所以選擇了 win32 。

13.選擇異常處理模型(64位)

 

 


說明:異常處理在開發中非常重要,你在開發的過程中,大部分的時間會耗在處理各種異常情況上。如果你之前選擇了 64位,則這里有兩個異常處理模型供你選擇,seh 是新發明的,而 sjlj 則是古老的。seh 性能比較好,但不支持 32位。 sjlj 穩定性好,支持 32位。
操作:我這里選擇了 seh 。

14.選擇異常處理模型(32位)

 

 


說明:選擇了 32位 后,則可以用 dwarf 和 sjlj 兩種異常處理模型。同樣的,dwarf 的性能要優於 sjlj ,可以它不支持 64位 。
操作:建議選擇 dwarf 。

15.建立修訂

 

 


說明:暫時沒弄明白是做什么的。(知道的人請留言)
操作:選擇默認選項。

16.MinGW-w64 版本選擇完成

 

 


說明:綠框中就是我的 MinGW-w64 安裝配置單,gcc 是 6.2.0 版本,系統架構是 64位,接口協議是 win32,異常處理模型是 seh,Build revision 是 1 。
操作:點擊紅框中的“Next”按鈕,進入下一個步驟。

17.選擇 MinGW-w64 的安裝目錄

 

 


說明:在這里選擇 MinGW-w64 將要安裝到哪個目錄中去。安裝程序默認會將 MinGW-w64 安裝在 C盤 ,而在 Windows 操作系統中 C盤 是系統盤,操作系統會被安裝在這個盤里,而按照一般的習慣,我們盡量不把應用軟件安裝載系統盤里。因為以前的電腦使用的是機械硬盤,而機械硬盤頻繁讀寫會降低效率,所以盡量將操作系統與應用軟件放在不同的硬盤分區下。當然,現在的電腦大部分都配備了固態硬盤(SSD),而且通常作為系統盤來使用,因此已經沒有讀寫效率的問題了。所以如果你還在用機械鍵盤,就將 MinGW-w64 放到其他非系統盤里,如果使用固態硬盤,則可以放在安裝程序提示的默認位置,或其他地方均可。
操作:點擊紅框中的“Browse”按鈕,以便更改 MinGW-w64 的安裝位置。

18.更改 MinGW-w64 的安裝位置

 

 


說明:點開綠框中的“此電腦”,就可以打開一個樹狀列表,然后找到你想要將 MinGW-w64 安裝到的位置。你也可以點擊黃框中的“新建文件夾”按鈕,創建一個新的目錄。
操作:選擇好安裝的目錄后,點擊紅框中的“確定”按鈕,之后安裝程序將把 MinGW-w64 安裝到那里。

19.確認 MinGW-w64 安裝目錄

 

 


說明:界面中的 Space available 指的是你選擇的目錄,所在的硬盤分區的剩余空間,而 MinGW-w64 至少會占用 500 MB 的空間。Create shortcuts in Start Menu 是說在開始菜單創建 MinGW-w64 的快捷方式,一般默認勾選即可。
操作:確認安裝目錄沒問題后,點擊紅框中的“Next”按鈕,開始正式安裝 MinGW-w64 。

20.開始下載 MinGW-w64 本體


說明:安裝程序開始連接服務器,並從中下載 MinGW-w64 的本體文件,視乎你的網絡環境,下載所需的時間會有所不同,如果你有其他事情要做,可以點擊“Cancel”按鈕,取消本次安裝。
操作:只需等待。

21.MinGW-w64 下載完成

 

 


說明:MinGW-w64 已經下載完成,我們可以在之前選擇的安裝目錄下,找到它的各種組件文件。
操作:點擊紅框中的“Next”按鈕,繼續下一個步驟。

22.關閉 MinGW-w64 安裝程序

 

 


說明:MinGW-w64 的安裝程序已經完成了它的使命,但 MinGW-w64 還沒有安裝完成,之后我們還需要進行一些配置,才能正常使用它編譯源代碼。
操作:點擊紅框中的“Finish”按鈕,將關閉 MinGW-w64 安裝程序。

23.MinGW-w64 安裝目錄

 

 


說明:MinGW-w64 下載完成后的安裝目錄,包含1個文件夾:mingw64,3個文件:mingw-w64.bat、uninstall.exe、uninstall.ini,和1個快捷方式:mingw-w64。雖然 MinGW-w64 已經下載完成,但並沒有安裝完成,我們還需要配置一下操作系統的環境變量,將 MinGW-w64 的 bin 目錄加入其中,使操作系統可以找到那些編譯工具。
操作:雙擊紅框中的“mingw64”文件夾,進入其中。

24.MinGW-w64 的 mingw64 文件夾

 

 


說明:mingw64 中包含了一系列的文件夾,根據文件夾的名稱,大概能猜到它們是做什么用的,但我們暫時不需要完全明白,只需要知道其中 bin 文件夾中,存放了那些編譯工具即可。
操作:雙擊紅框中的“bin”文件夾,進入其中。

25.MinGW-w64 的 bin 文件夾

 

 


說明:bin 文件夾下包含了很多后綴名是 .exe 的可執行程序,這些就是開發時所需的工具,如:gcc.exe 是用來編譯 C程序的,g++.exe 是用來編譯 C++ 程序的,而 gdb.exe 則是用來調試程序的 debug 工具。
操作:點擊紅框中的地址欄,並復制(Ctrl + c)那一串地址。

26.此電腦

 

 


說明:我們已經復制了 MinGW-w64 的 bin 文件夾的地址,接下來只要將它添加到系統的環境變量中,就可以完成 MinGW-w64 的全部配置了。
操作:右鍵點擊“此電腦”,在彈出的菜單中點擊紅框中的“屬性”項。

27.計算機系統窗口

 

 


說明:這個窗口也可以通過“控制面板” -> “系統和安全” -> “系統”來打開。如果你不知道自己的系統是 32位 還是 64位,也可以在這里查看。
操作:點擊紅框中的“高級系統設置”鏈接,將打開“系統屬性”窗口。

28.系統屬性窗口

 

 


說明:所謂的“環境變量”其實就是各種程序的默認安裝目錄,在那里有可執行程序。
操作:點擊紅框中的“環境變量”按鈕,將打開“環境變量”窗口。

29.系統環境變量窗口

 

 


說明:在這個窗口中我們可以編輯系統的環境變量,很多軟件在安裝的時候,會自動編輯環境變量。MinGW-w64 的安裝程序比較簡陋,只能由我們手動編輯。
操作:首先點擊選中綠框中的“Path”項,然后再點擊紅框中的“編輯”按鈕。

30.編輯 Path 環境變量

 

 


說明:這是 Windows 10 中的編輯界面,比之前的版本要清晰明了,操作簡單了很多,也不容易出錯了。
操作:點擊紅框中的“新建”按鈕,將創建一個新的空白變量位置。

31.新建 MinGW-w64 的環境變量

 

 


說明:現在只需將之前復制的 MinGW-w64 的 bin 文件夾地址,復制到新增的空白變量位置里,即可完成 MinGW-w64 的配置工作。
操作:將 bin 文件夾地址,黏貼到紅框中的輸入框中。

32.添加 MinGW-w64 環境變量已完成

 

 


說明:MinGW-w64 的環境變量已經添加完畢。
操作:點擊紅框中的“確定”按鈕,MinGW-w64 的配置就完成了。

33.啟動“命令提示符”

 

 


說明:為了測試 MinGW-w64 是否配置成功,我們需要在“命令提示符”中執行一個命令。所以要先啟動“命令提示符”,值得注意的是各個 Windows 版本的啟動方式不同,但都可以通過打開“運行”窗口,輸入“cmd”來打開它。
操作:右鍵點擊開始按鈕,在彈出的菜單中點擊紅框中的“命令提示符”項。

34.命令提示符

 

 


說明:MinGW-w64 是命令行工具,如果不與其他軟件配合,則只能通過“命令提示符”來調用。
操作:輸入“gcc -v” 並按回車鍵(Enter),將會顯示 MinGW-w64 的組件列表。

35.MinGW-w64 安裝完成

 

 


說明:如果你的“命令提示符”顯示了一大串組件信息,那說明你的 MinGW-w64 已經安裝完成了,恭喜!
操作:從現在開始你就可以用 MinGW-w64 來編譯 C程序 了。

五、使用 MinGW-w64 編譯源代碼
MinGW-w64 沒有圖形用戶界面,它其實是一組命令行工具集,任何操作都只能通過在“命令提示符”中輸入命令的形式來執行。對於編程來說,這種命令行工具尤其獨特的優勢,那就是不用雙手離開鍵盤,即可完成所有操作。鼠標雖然使用簡單方便,但效率仍然不及鍵盤。而且,給一個程序開發圖形用戶界面,是一件非常麻煩的事情,因為它是與平台緊密相關的,你要考慮各個平台的不同。
當然,世界上還是有很多擁有漂亮的圖形用戶界面的集成開發環境(IDE),其中的一些內置的編譯器就是 MinGW-w64(GCC) ,例如:Code Lite、Code::Blocks 等。

A.編譯命令 gcc

 

 


格式:gcc 源代碼文件的完整名字
示例:gcc hello.c
說明:“gcc”是 MinGW-w64 內置的編譯命令,“hello.c”則是我們要編譯的源代碼文件的名字。
注意:首先,“gcc”命令與源代碼的文件名之間有一個空格。其次,文件名必須完整正確,不能省略后綴名“.c”。
因為 MinGW-w64 本來就是將 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, world 源代碼

 

 


這里用 Windows 自帶的記事本或任意文本編輯器,將“hello.c”這個源代碼文件打開,然后將上圖所示的測試代碼鍵入到文件中,最后保存文件即可。現在測試用的源代碼文件已經准備完成,我們可以進行下一步的編譯了。
這段代碼是最基礎的 hello, world 程序,會在屏幕上顯示“hello, world”這段文字。相信這是學編程的大多數人,入門時的第一個程序,所以這里也就不再贅述了。

D.編譯 hello.c 源代碼

 

 


之前說過 MinGW-w64 是命令行工具沒有圖形用戶界面,所以編譯操作需要在命令提示符中進行。
首先我們打開命令提示符,然后要將工作目錄定位到源代碼文件的存儲位置,這一步非常重要,沒有接觸過命令行工具的人,往往會在這里出錯。DOS 命令“cd”可以改變當前的工作目錄,具體做法是“cd”命令后面加上目標工作目錄,如上圖第三行,就是重新定位到 E盤的 a 目錄下。使用完“cd”命令后,還要再鍵入一次定位到的目錄的地址,這樣才會轉移過去,但只需要鍵入盤符即可,並不需要鍵入完整地址,如上圖第四行。工作目錄重新定位后,如上圖第五行所示,工作目錄已經從 C:\Users\lenovo 更改為 E:\a 。
現在我們只需要執行“gcc hello.c”這行命令,就可以將源代碼編譯為可執行程序了。

E.編譯后生成 a.exe 可執行程序

 

 


如上圖所示,a.exe 就是編譯后生成的可執行程序。因為我們編譯時沒有指定生成的程序名,所以 MinGW-w64 默認將程序命名為 a ,加上后綴名就是 a.exe 了。如果我們想在編譯時就指定生成的程序名,就需要使用“gcc”命令的“-o”選項了。

F.帶 -o 參數的 gcc 命令

 

 


格式: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.exe 可執行程序

 

 


執行完“gcc hello.c -o hello.exe”編譯命令后,會在工作目錄中生成 hello.exe 可執行程序,這就是我們得到的最終成果。

I.雙擊運行 hello.exe

 

 


用鼠標雙擊運行編譯后的 hello.exe 程序,會啟動一個命令提示符窗口,並在里面顯示“hello, world”這幾個字符。這代表我們成功的完成了一次編譯,將那段C語言代碼編譯成了計算機可以執行的程序。

J.在命令提示符中運行 hello.exe

 

 


想要運行編譯好的程序,並不是非要用鼠標雙擊程序啟動,也可在命令提示符中直接輸入編譯后的程序名稱,例如輸入“hello.exe”,也可以直接運行程序。甚至可以省略程序的后綴名,只需輸入“hello”即可,程序同樣會正確的運行。

六、一些額外的設置
這些額外的設置,可以使 MinGW-w64 使用起來更方便。因為“gcc”命令有些麻煩,每次編譯都要輸入類似“gcc hello.c -o hello.exe”這樣的一串字符,所以我們為了簡化這一步驟,轉而使用“make”命令。只是“make”是 Linux 和 類Unix 下的工具,所以在 MinGW-w64 中需要一些額外的修改。

1).創建 gcc.exe 的副本 cc.exe

 

 


首先復制一個“gcc.exe”的副本,然后將其更名為“cc.exe”即可。

2).創建 mingw32-make.exe 的副本 make.exe


與對“gcc.exe”的操作相同,復制一個“mingw32-make”的副本,然后更名為“make.exe”。

3).使用 make 命令編譯源代碼

 

 


現在我們就可以使用“make”命令來編譯源代碼,只需要輸入“make hello”即可編譯生成“hello.exe”了。

七、進階
上述只是簡單的編譯源代碼的方法,適用於單個或少量源代碼文件,如果是復雜的大型程序,要用到 makefile 來組織源代碼時,就需要 mingw32-make(修改后使用 make) 命令了。
如果程序編譯或運行出錯,需要調試源代碼,則可以使用 gdb 命令,來幫助我們確定問題產生在哪里。
如果代碼沒有明顯的編譯錯誤,運行時也沒有邏輯錯誤,則在最終編譯為可發布版的程序時,我們還要考慮編譯優化的問題,以便生成的程序文件擁有更小的體積,和更高的運行效率。gcc 命令有 -00 、 -01 、 -02 、 -03 這幾個優化選項,其中 -00 是默認選項,意思是無優化,剩下的幾個選項隨數字的增大,優化程度也會逐漸增強。

八、問題列表
這里會列出一些可以預見的問題,並提供解決問題方法。
①.如果“自動安裝程序”無法下載組件

 

 


說明:如果網絡環境不太好,或因寬帶提供商的限制,可能會導致程序下載組件非常的緩慢,甚至會失敗。這種時候,我們可以不用安裝程序,而是嘗試直接手動下載 MinGW-w64 的壓縮包。這種方法的好處是可以使用第三方下載軟件,而這種下載軟件大多提供加速下載,以及斷點續傳功能。基本能解決無法下載的問題。
操作:如上圖所示。將第四章、第3節 SourceForge 中的 MinGW-w64 下載頁面往下拉,就能看到這部分的頁面。其中,紅框內的鏈接,就是 MinGW-w64 的壓縮包手動下載鏈接(6.3.0版),只需根據需要選擇對應的鏈接下載即可。例如:x86_64-win32-seh ,x86_64 指 64位,win32 指可開發 Windows 程序,seh 指 異常處理模型。
將 MinGW-w64 壓縮包下載到本地后,解壓縮,然后就可以照常進行配置了。


 

出處:https://zhuanlan.zhihu.com/p/76613134

=======================================================================================

        最近用 C 語言寫了一個小程序,在設計時希望該程序在 Windows、Linux平台上都能夠運行,所以使用宏來區分在不同操作系統下執行的語句。比如這個程序需要加載動態鏈接庫,在包含頭文件時,寫法如下:
#if defined(_WIN32) || defined(_WIN64)
  #include <windows.h>
#else
  #include <dlfcn.h>  /* unix 或 linux 下包含與動態庫加載、卸載有關函數的頭文件名是 dlfcn.h */
#endif

        加載動態鏈接庫時,處理方法如下:

#if defined(_WIN32) || defined(_WIN64)
  HINSTANCE dll_handle_for_win;
/* 當操作系統為 windows 類型時,使用函數 LoadLibrary() 加載動態鏈接庫 */
#else
  void *dll_handle_for_unix_or_linux;
  char *error_statement;
/* 當操作系統為 unix 或 linux 類型時,使用函數 dlopen() 加載動態鏈接庫 */
#endif
 
  int error_code;
  char dll_file_name[256];  /* dll_file_name 是要加載的動態鏈接庫文件名 */
 
/*********************************
  注意:這里省略了部分內容
**********************************/
 
/**************************************/
// Load dynamic library
#if defined(_WIN32) || defined(_WIN64)
  if ( !(dll_handle_for_win = LoadLibrary(dll_file_name)) )
  {
#ifdef _DEBUG
    printf("load dynamic link library \'%s\' failed at %s, line %d!\n", dll_file_name, __FILE__, __LINE__);
    error_code = GetLastError();
    printf("LoadLibrary() function returned error code: 0x%x\n", error_code);
#endif
    return (-1);
  }
/**************************************/
#else
  dlerror();
  if ( !(dll_handle_for_unix_or_linux = dlopen(dll_file_name, RTLD_LAZY)) )
  {
    error_statement = dlerror();
#ifdef _DEBUG
    printf("load dynamic link library \'%s\' failed at %s, line %d!\n", dll_file_name, __FILE__, __LINE__);
    printf("Error statement: %s\n", error_statement);
#endif
    return (-1);
  }
#endif

        釋放動態鏈接庫時,處理方法如下:

#if defined(_WIN32) || defined(_WIN64)
  FreeLibrary(dll_handle_for_win);
#else
  dlclose(dll_handle_for_unix_or_linux);
#endif

 

        在 64 位 Win7 下,用 Visual Studio 2010 編譯、鏈接,能夠生成可執行程序,程序能正常運行。接下來想知道在 Linux 下該程序能否編譯,希望在 Windows 平台上先排除一下像拼寫一類的小錯誤,可是手頭暫時沒有安裝Linux 的計算機,這樣就需要在 Windows 平台上用 GCC 編譯一下這個程序,我的做法如下:

1. 安裝 MinGW;在 MinGW 的官網( http://mingw.org/ )上找到安裝文件。
    下載鏈接為:
https://nchc.dl.sourceforge.net/project/mingw/Installer/mingw-get-setup.exe
    注意:這個是 32 位的 MinGW,如果需要 64 位的 MinGW,
    下載網頁是:
MinGW-w64 - for 32 and 64 bit Windows download | SourceForge.net
    運行程序 mingw-get-setup.exe,安裝時會看到是否同時安裝圖形用戶界面支持( also install support for the graphical user interface )的提示,由於用不到,就取消了對這一項的勾選。安裝時將 MinGW 安裝到了默認目錄 C:\MinGW 下。

2. 安裝GCC;按Windows組合鍵 Win + R,輸入命令 cmd,啟動命令提示符窗口。進入目錄 C:\MinGW\bin\ ,執行命令:mingw-get install gcc
    這樣就開始從網絡上下載 GCC 相關的文件,安裝完成后,
    執行命令:gcc --version ,將會看到 GCC 的版本號。如果想獲取更多信息,可以執行命令:gcc -v

 

3. 修改環境變量;“開始”按鈕 -> 計算機 -> 菜單中的“系統屬性” -> 高級系統設置,修改環境變量,在原有的 Path 后面添加以下內容:
    ;C:\MinGW\bin\

 

     修改完成后重啟計算機。重啟后,就可以在命令提示符窗口中,在任意路徑下執行 gcc.exe 程序了。

4. 編譯 C 程序。由於當前階段只想編譯程序,不需要鏈接。進入命令提示符窗口,到程序所在目錄下,執行gcc的命令

    格式如下:gcc -c 源代碼文件名.c -I 頭文件所在路徑
    比如可以是:gcc -c test.c -I C:\testcode\include
    結果顯示了一大堆錯誤和警告。仔細一看,好像編譯報錯的程序語句都處於 _WIN32 或 _WIN64 宏定義中包含的部分。我們此時的目的並不是要用 GCC 生成 Windows 下的可執行程序,而是想讓 GCC 編譯一下程序中能夠在 Linux 平台上執行的那部分語句,檢查那部分語句中是否存在語法等錯誤,但是現在 GCC 編譯的還是在 Windows 平台上能執行的語句。為什么會這樣?需要查看一下 GCC 編譯時默認已定義了哪些宏。在網上查到查看 GCC 編譯時默認宏的命令是:
gcc -posix -E -dM - </dev/null
    可是該命令在 Windows 的命令提示符窗口中無法執行。這該怎么辦呢?忽然想到這台計算機上安裝過從
Git for Windows 上下載的 git for windows。該程序自帶了一個 Git Bash,如下圖:


    到“開始”菜單中,啟動 Git Bash,然后輸入命令:gcc -posix -E -dM - </dev/null
    這下可以成功執行了,顯示出當前 GCC 中定義的宏列表,如下圖:

    果然使用 mingw-get 安裝的 gcc 中,已經默認定義了 _WIN32 宏。在編譯 C 程序時,想取消對 _WIN32 及 _WIN64 宏的定義,可以使用下面的命令:
gcc -c test.c -I C:\testcode\include -U_WIN32 -U_WIN64
    還發現默認已定義的宏中沒有包含 _DEBUG,在編譯調試版程序時需要用到這個宏,可以使用下面的命令:
gcc -c test.c -I C:\testcode\include -U_WIN32 -U_WIN64 -D_DEBUG

    用 GCC 編譯時發現不再報告處於 _WIN32 或 _WIN64 宏定義中包含的語句錯誤了。接下來根據編譯結果給出的提示,修改了一些拼寫錯誤,成功生成了 test.o 文件,證明該 C 程序能夠在 Linux 下通過編譯。等將來有空時安裝 Linux 虛擬機,再將 C 程序及其調用的動態庫源程序都拿到 Linux 上編譯鏈接,就能生成 Linux 上的可執行程序了。

------------------------

說明
gcc 編譯選項:
-c 只編譯,不鏈接
-D 使用指定的宏
-U 取消指定的宏

 

 

出處:https://blog.csdn.net/henter/article/details/54863462

=======================================================================================

MinGW安裝和使用 

MinGW(Minimalist GNU For Windows)是個精簡的Windows平台C/C++、ADA及Fortran編譯器,相比Cygwin而言,體積要小很多,使用較為方便。

MinGW最大的特點就是編譯出來的可執行文件能夠獨立在Windows上運行。

MinGW的組成:

  • 編譯器(支持C、C++、ADA和Fortran)
  • GNU工具
  • mingw-get(用於Windows平台安裝和部署MinGW和MSYS的命令行安裝器)
  • mingw-get-inst(用於GUI打包)

1. MinGW安裝

1.1. 下載

MinGW官方網址:http://www.mingw.org/

 
 

點擊“Download Installer”后會跳轉到Sourceforge頁面進行下載:

 
 

之后,會下載一個名為mingw-get-setup.exe的安裝文件。

1.2. 安裝下載器

運行剛剛下載的安裝程序,看到如下界面:

 
 

點擊“Install”,進入下面這個界面:

 
選擇安裝路徑

默認安裝路徑為C:\MinGW,我習慣安裝在D盤下,點擊“Change”修改路徑如下:

 
 

點"Continue"繼續。

 
安裝過程

安裝完成后,桌面出現這樣一個圖標。

 
安裝器

這只是個安裝器,需要在線下載真正的安裝內容,所以速度不會快。

1.3. 選擇安裝組件

運行安裝程序,有的版本在安裝之后會自動運行,看到下面這個界面:

 
選擇安裝組件

選擇需要安裝的組件,右鍵選擇“Mark for Installation”,之后選擇"Installation -> Apply Changes”。

1.4. GCC

這里重點要提到的是GCC組件的安裝,如圖所示。

 
選擇GCC組件

先選擇左邊的"MinGW Base System"選項,之后再右邊找到mingw-gcc。最好選擇bin,dev和lic三個組件進行安裝。

 
 

之后點擊菜單欄中的“Installation”進行安裝。

注意:在安裝程序中,復選框為綠色表示已經安裝的項目,復選框為白色表示沒有安裝的項目。因此如果需要刪除,只需要在綠色復選框右鍵后選擇“Mark for removal”即可。

1.5 確認安裝成功

安裝執行完成后,在D:\MinGW\bin目錄(我們之前配置好的路徑)下進行查看。如果找到下面這三個可執行文件,說明安裝成功。

 
 

注意:如果你是為了使用Code::Blocks安裝MinGW,到這一步就完成了。之后的使用請參考C語言從零開始(二)-Code::Blocks使用。Code::Blocks在配置Debug工具時需要制定MinGW的路徑。

2. 配置

2.1. 設置MinGW環境變量

鼠標右鍵“我的電腦”->“屬性”,選擇“高級”選項卡下的“環境變量”,在系統變量里點“新建”,之后填寫MinGW的安裝路徑,如下:

 
MinGW路徑

之后找到Path,在最前面添加下面這段聲明,之后點擊確定。安裝完成后,在MinGW\bin的目錄下,會有一個名為gcc.exe的可執行文件。看到這個說明安裝成功。

%MinGW%\bin;

2.2. 查看GCC版本信息

打開命令行,輸入gcc -v查看編譯器版本。如下圖:

 
GCC

3. MinGW使用

3.1. 測試編譯

測試文件test.c,代碼如下

#include <stdio.h>

void main() {
        printf("Hello World!");
}

3.2. 編譯test

編譯命令如下:

gcc test.c -o test

輸出結果為:test.exe

3.3. 執行

輸入test回車,結果如下:

 
結果



from:https://www.jianshu.com/p/e9ff7b654c4a

 

出處:https://www.cnblogs.com/lidabo/p/8990348.html

=======================================================================================

win10安裝MinGW

  MinGW,Minimalist GNU for Windows,windows最簡化的GNU,就是一個C的編譯工具集,轉為windows操作系統下的C/C++開發者服務。我們從官網下載安裝程序,打開官網后右邊菜單欄點擊Downloads:

 

 

  跳往下載列表頁面后,往下拉,點擊安裝程序下載:

 

 

   最后雙擊該exe執行安裝,彈出安裝界面:

 

  接下來默認給你設置好了安裝目錄和勾選了默認設置,點擊繼續:

 

 

 

 

   最后進入安裝包階段,左邊窗口有兩個按鈕:基礎必備的和全部的,對應右邊的詳細列表:

 

 

  點擊復選框,下面窗口會說明這個包用來干嘛, 在彈出的框中點擊Mark for Installation安裝標記后,點擊左上角的Installation -> Apply Changes:

 

 

 

 

 

  雖然只是這幾個基礎包,下載也不容易,畢竟是外網,老是鏈接超時:

 

   

   而且它會反復嘗試,退不出來,只能用任務管理器把它kill掉。既然此路不通,只能另走他路。我們打開命令行,進入C盤的MinGW目錄bin路徑,敲命令安裝:

復制代碼
C:\MinGW\bin>mingw-get install gcc http://osdn.net/dl/mingw/gcc-9.2.0-2-mingw32-lic.tar.xz 21.33 kB / 21.33 kB |================================================| 100% http://osdn.net/dl/mingw/libiconv-1.14-4-mingw32-dll-2.tar.xz 642.41 kB / 642.41 kB |================================================| 100% http://osdn.net/dl/mingw/libatomic-9.2.0-2-mingw32-dll-1.tar.xz 7.47 kB / 7.47 kB |================================================| 100% http://osdn.net/dl/mingw/libgcc-9.2.0-2-mingw32-dll-1.tar.xz 167.01 kB / 167.01 kB |================================================| 100% http://osdn.net/dl/mingw/libgmp-6.1.2-3-mingw32-dll-10.tar.xz 204.25 kB / 204.25 kB |================================================| 100%
復制代碼

  如果還是出現鏈接下載失敗:

http://osdn.net/dl/mingw/gcc-9.2.0-2-mingw32-lang.tar.xz 1.57 MB / 1.57 MB |================================================| 100% mingw-get: *** ERROR *** http://osdn.net/dl/mingw/gcc-core-9.2.0-2-mingw32-bin.tar.xz:cannot open URL; status = 12029 mingw-get: *** ERROR *** Get package: http://osdn.net/dl/mingw/gcc-core-9.2.0-2-mingw32-bin.tar.xz: download failed install: gcc-9.2.0-2-mingw32-lic.tar.xz

  我們重新執行一次即可,它會把失敗的jar包重新下載:  

復制代碼
C:\MinGW\bin>mingw-get install gcc http://osdn.net/dl/mingw/gcc-core-9.2.0-2-mingw32-bin.tar.xz 17.05 MB / 17.05 MB |================================================| 100% install: gcc-9.2.0-2-mingw32-lic.tar.xz mingw-get: *** ERROR *** package gcc-9.2.0-2-mingw32-lic.tar.xz is already installed install: gcc-core-9.2.0-2-mingw32-bin.tar.xz installing gcc-core-9.2.0-2-mingw32-bin.tar.xz install: gcc-core-4.8.2-2-mingw32-dev.tar.lzma mingw-get: *** ERROR *** package gcc-core-4.8.2-2-mingw32-dev.tar.lzma is already installed install: gcc-core-4.8.1-5-mingw32-doc.tar.lzma mingw-get: *** ERROR *** package gcc-core-4.8.1-5-mingw32-doc.tar.lzma is already installed install: gcc-9.2.0-2-mingw32-man.tar.xz mingw-get: *** ERROR *** package gcc-9.2.0-2-mingw32-man.tar.xz is already installed install: gcc-9.2.0-2-mingw32-info.tar.xz mingw-get: *** ERROR *** package gcc-9.2.0-2-mingw32-info.tar.xz is already installed install: gcc-9.2.0-2-mingw32-lang.tar.xz mingw-get: *** ERROR *** package gcc-9.2.0-2-mingw32-lang.tar.xz is already installed
復制代碼

 

  一直下載不下來,我們也可以自己打開上面提示的下載地址頁面,自己去下載:

 

   然后需要手動把下載的包放到指定目錄下:

 

 

 

  同上,繼續執行g++、gdb和mingw32-make的下載:

C:\MinGW\bin>mingw-get install g++ http://osdn.net/dl/mingw/gcc-c++-9.2.0-2-mingw32-bin.tar.xz 10.39 MB / 10.39 MB |================================================| 100% http://osdn.net/dl/mingw/gcc-c++-9.2.0-2-mingw32-man.tar.xz 255.52 kB / 255.52 kB |================================================| 100%
C:\MinGW\bin>mingw-get install gdb http://osdn.net/dl/mingw/libz-1.2.11-1-mingw32-dll-1.tar.xz 62.95 kB / 62.95 kB |================================================| 100%

 

  gdb的話這個鏈接http://prdownloads.sourceforge.net死活連不上,我認為這個網址變更了,去掉了前面的prdownloads.變成如下鏈接:https://sourceforge.net/projects/mingw/files/MinGW/Extension

 

  我們把這幾個下載下來:

 

 

 

   把上面6個壓縮包放到C:\MinGW\var\cache\mingw-get\packages目錄中,重新安裝一次。

  mingw32-make也是如法炮制:

  1、命令行執行安裝失敗(還是這個prdownloads.sourceforge.net):

復制代碼
C:\>mingw-get install mingw32-make
mingw-get: *** ERROR *** http://prdownloads.sourceforge.net/mingw/make-3.82.90-2-mingw32-cvs-20120902-bin.tar.lzma?download:cannot open URL; status = 12031
mingw-get: *** ERROR *** Get package: http://prdownloads.sourceforge.net/mingw/make-3.82.90-2-mingw32-cvs-20120902-bin.tar.lzma?download: download failed
mingw-get: *** ERROR *** http://prdownloads.sourceforge.net/mingw/make-3.82.90-2-mingw32-cvs-20120902-doc.tar.lzma?download:cannot open URL; status = 12031
mingw-get: *** ERROR *** Get package: http://prdownloads.sourceforge.net/mingw/make-3.82.90-2-mingw32-cvs-20120902-doc.tar.lzma?download: download failed
mingw-get: *** ERROR *** http://prdownloads.sourceforge.net/mingw/make-3.82.90-2-mingw32-cvs-20120902-lic.tar.lzma?download:cannot open URL; status = 12031
mingw-get: *** ERROR *** Get package: http://prdownloads.sourceforge.net/mingw/make-3.82.90-2-mingw32-cvs-20120902-lic.tar.lzma?download: download failed
mingw-get: *** ERROR *** http://prdownloads.sourceforge.net/mingw/make-3.82.90-2-mingw32-cvs-20120902-lang.tar.lzma?download:cannot open URL; status = 12031
mingw-get: *** ERROR *** Get package: http://prdownloads.sourceforge.net/mingw/make-3.82.90-2-mingw32-cvs-20120902-lang.tar.lzma?download: download failed
復制代碼

 

  2、到sourceforge.net網站上找對應的包(一般都是找最上面那個最新的):

 

 

   3、下完后放到mingw的包目錄中:

 

 

 

  4、重現用命令行執行以下安裝:

復制代碼
C:\>mingw-get install mingw32-make
install: make-3.82.90-2-mingw32-cvs-20120902-bin.tar.lzma
 installing make-3.82.90-2-mingw32-cvs-20120902-bin.tar.lzma
install: make-3.82.90-2-mingw32-cvs-20120902-doc.tar.lzma
 installing make-3.82.90-2-mingw32-cvs-20120902-doc.tar.lzma
install: make-3.82.90-2-mingw32-cvs-20120902-lic.tar.lzma
 installing make-3.82.90-2-mingw32-cvs-20120902-lic.tar.lzma
install: make-3.82.90-2-mingw32-cvs-20120902-lang.tar.lzma
 installing make-3.82.90-2-mingw32-cvs-20120902-lang.tar.lzma
復制代碼

  

  最后把MinGW配置到系統環境變量中,方便使用以上工具:右鍵點擊“此電腦” -> 選擇“屬性” -> 選“高級系統設置” -> 點“環境變量” -> 選“Path”后點編輯 -> 在彈出框點新建,把C:\MinGW\bin的路徑加進去:

 

  確認下我們的安裝:

復制代碼
C:\Users\wuxun>gcc -v
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/lto-wrapper.exe
gcc 版本 9.2.0 (MinGW.org GCC Build-2)

C:\Users\wuxun>g++ -v
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/lto-wrapper.exe
gcc 版本 9.2.0 (MinGW.org GCC Build-2)

C:\>gdb -v
GNU gdb (GDB) 7.6.1
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.

C:\>mingw32-make -v
GNU Make 3.82.90
Built for i686-pc-mingw32
Copyright (C) 1988-2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
復制代碼

 

 

出處:https://www.cnblogs.com/wuxun1997/p/13364183.html

=======================================================================================

windows下安裝mingw-w64

mingw-w64應該可以算是mingw的改進版本吧,mingw系列編譯器是非常好的並且主流的c/c++編譯器

mingw-w64只負責程序的編譯,只提供命令行操作沒有編輯代碼的圖像界面,代碼的編寫需要由文本編輯器(如vscode)來完成

安裝步驟:

首先官網去下載:mingw-w64

但普通人群可能會因為一些原因下載失敗,所以一般建議下載離線版解壓后添加環境變量

離線版下載地址:https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/sjlj/x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z/download

下載后選一個合適的位置解壓,這個位置也就相當於是安裝位置(順便給文件夾改個短一點的名字)

進入解壓好的文件夾下的bin文件夾

復制下來路徑

然后在此電腦鼠標右鍵選擇屬性

選擇高級系統設置

 

點環境變量

 

 

選擇系統環境變量下的Path

選擇編輯

 

點新建

然后把剛剛復制的文件路徑粘貼進去

然后一路點確定退出

 

完成

驗證一下

按win+r運行cmd或者powershell輸入gcc -v

出現下圖的信息說明一切順利

結束

之后就能通過g++ xxx.cpp -o xxx.exe這樣的命令行指令編譯c/cpp文件了

 

 

出處:https://www.cnblogs.com/TAMING/p/9945389.html

=======================================================================================


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM