MinGW、MinGW-w64 簡介
MinGW(全稱為 Minimalist GNU for Windows),它實際上是將經典的開源 C 語言編譯器 GCC 移植到了 Windows 平台下,並且包含了 Win32 API ,因此可以將源代碼編譯為可在 Windows 中運行的可執行程序。而且還可以使用一些 Windows 平台不具備的,但是 Linux 平台具備的開發工具和 API 函數。用一句話來概括就是:MinGW 就是 GCC 的 Windows 版本 ;
MinGW-w64 原本是 MinGW 項目的分支,后來成為獨立發展得項目,由於僅有 MinGW-w64 被 GCC 官方所支持, 而 MinGW 早已停止更新, 因此推薦使用 MinGW-w64;
MinGW-w64 與 MinGW 的區別在於 MinGW 只能編譯生成 32 位可執行程序,而 MinGW-w64 則可以編譯生成 64 位或 32 位可執行程序。
下載地址
官網:<https: sourceforge.net="" projects="" mingw-w64="" files="" toolchains%20targetting%20win64="" personal%20builds="" mingw-builds="">

本人下載的是:
PS:不建議在線安裝,即使用 exe 文件安裝;建議下載離線的壓縮包,解壓安裝,添加環境變量即可。
MinGW 各版本參數說明
MinGW 可以適應不同系統開發環境,因此有幾大參數需要進行選擇: Version、Architecture、Threads、Exception
-
Version:指的是你選擇的 GCC 編譯器的版本,我選擇的是當前最新版本 8.1.0,一般建議選擇最新的版本;
-
Architecture:指的是你的電腦的系統類型,i686 表示的是 32 位的系統類型,x86_64 表示的是 64 位的系統類型;
-
Threads:指的是線程模型,posix 或 win32
- POSIX(Portable Operating System Interface,可移植操作系統接口),是 UNIX 系統的一個 API 設計標准,很多類 UNIX 系統也在支持兼容這個標准,如 Linux 操作系統。如果在 Windows 下開發 Linux 應用程序,則選擇 posix;
- Win32,是 Windows 系統下一個 API 設計標准,如果開發 Windows 平台下的應用程序,就需要選擇 Win32;
-
Exception:指的是異常處理模型。i686 系統架構有兩種選擇:dwarf 和 sjlj;x86_64 系統架構也有兩種選擇:seh 和 sjlj。
這里說一下 sjlj,seh,dwarf 三者的區別:
在C++中有 try..throw..catch,當它執行這種結構時,它需要保存現場還原現場,而 sjlj,seh,dwarf 正是實現這類過程的三種方式。
-
sjlj 全稱是 SetJump / LongJump,前者設還原點,后者跳到還原點。可用於 32 位或者 64 位系統。
-
seh(Structured Exception Handling,結構化異常處理)是 Borland 公司的,微軟買了其專利使用權,它利用了 FS 段寄存器,將還原點壓入棧,收到異常時再彈出。相較而言,sjlj 是 C 標准庫就有的東西,seh 在 2014 年前是有專利的,從性能上說 seh 比 sjlj 快。只用於64位系統。
-
dwarf 只支持32位系統 – 沒有永久的運行時間開銷 – 需要整個調用堆棧被啟用,這意味着exception不能被拋出,例如Windows系統DLL。
綜上所述:
【x86_64 64位】
1、seh 是新發明的,而 sjlj 則是古老的。只用於64位系統。
2、seh 性能比較好,但不支持 32位。 sjlj 穩定性好,支持 32位和64位。
因此,x86_64 系統架構的推薦使用 seh 的異常處理模型。
【i686 32位】
1、dwarf 只支持 32 位,而 sjlj 支持 32 位或64 位,但是 dwarf 的性能要優於 sjlj。
因此,i686 系統架構的推薦使用 dwarf 的異常處理模型。
【參考】<https: wiki.qt.io="" mingw-64-bit="">
-
解壓安裝
1、下載:x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z
2、解壓到 D 盤的程序文件目錄:

3、添加環境變量

測試
在 cmd 中進行命令測試:gcc -v 和 g++ -v
出現如下效果圖說明安裝成功:


</https:></https:>
