MinGW(全称为,Minimalist GNU for Windows),它实际上是将经典的开源 C语言编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 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位 可执行程序。
MinGW-w64官网:http://mingw-w64.org/doku.php/start
本人下载的是v7.0.0版本的,也是目前最新版的,发布日期:2019-11-10。
下载链接:https://sourceforge.net/projects/mingw-w64/files/
下载最新版的链接:https://sourceforge.net/projects/mingw-w64/files/latest/download
我们在Windows系统下可以选择在线安装的方式,对应下载的文件是:MinGW-W64-install.exe 。
<说明> mingw-w64-install.exe 安装文件,它本质上是一个下载程序,会根据我们之后的一些设置,选择性的下载相应的组件,并将它们组织在一起。所以,运行前要确定网络通畅,而且你有足够的时间,因为根据你的网速,它可能需要花费一定的时间来下载。
操作:用鼠标双击运行 mingw-w64-install.exe 。
注意:如果出现无法运行,或者安装出错,你可以右键点击它,并在弹出窗口中选择“以管理员身份运行”选项,重新运行 mingw-w64-install.exe ,基本可以解决大部分问题。
一、以“管理员身份运行” mingw-w64-install.exe 文件,它会从服务器获取MinGW-w64 信息。
说明:这里程序正在链接服务器,以便获取存储在仓库中的 MinGW-w64 的文件信息。
操作:只需等待。
二、MinGW-w64 版本选择,如下图所示:
说明:在这个界面上,可以根据所要搭建的开发环境,选择对应的选项,从而下载所需的组件。
操作:依次选择 Version、Architecture、Threads、Exception、Build revision 下拉列表中适当的选项,接下来将会详细介绍这些选项。
version选项:指的是你选择的GCC编译器的版本,我选择的是当前最新版本8.1.0,一般建议选择最新的版本。
操作:选中 8.1.0即可。
Architecture选项:指的是你的电脑的系统类型,i686表示的是32位的系统类型,x86_64表示的是64位的系统类型。我本人的电脑是64位的系统类型,所以选中x86_64。
Threads选项:指的是线程模型,posix/win32。
说明:
(1)POSIX(Portable Operating System Interface,可移植操作系统接口),它是UNIX系统的一个API设计标准,很多类UNIX系统也在支持兼容这个标准,如Linux操作系统。
(2)Win32,它是Windows系统下一个API设计标准,如果你是开发Windows平台下的应用程序,就需要选择Win32。
操作:本人是在Windows下开发Linux应用程序,所以选择的是:posix。
Exception选项:指的是异常处理模型。i686系统架构有2种选择:dwarf 和 sjlj。x86_64系统架构也有2种选择:seh 和 sjlj。由于我选择的是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 的异常处理模型。
操作:我的电脑是x86_64系统架构的,所以我选中 seh。
【参考】https://wiki.qt.io/MinGW-64-bit
Build revision选项:建立修订。
操作:选择默认选项,我的下拉菜单只有 0 这一个选项,别无选择了。
三、选择 MinGW-w64 的安装目录
可以看到,默认安装目录是在C盘的C:\Program Files\mingw-w64文件夹下,而C盘是系统盘,按照一般的习惯,我们尽量不把应用软件安装在系统盘里。因为以前的电脑使用的是机械硬盘,而机械硬盘频繁读写会降低效率,所以尽量将操作系统与应用软件放在不同的硬盘分区下。当然,现在的电脑大部分都配备了固态硬盘(SSD),而且通常作为系统盘来使用,因此已经没有读写效率的问题了。所以如果你还在用机械键盘,就将 MinGW-w64 放到其他非系统盘里,如果使用固态硬盘,则可以放在安装程序提示的默认位置,或其他地方均可。
操作:将自定义的路径直接复制到"Destination folder"下的文本框中,如下图是我自定义的安装路径:
说明:界面中的 Space available 指的是你选择的目录,所在的硬盘分区的剩余空间,而 MinGW-w64 至少会占用 500 MB 的空间。Create shortcuts in Start Menu 是说在开始菜单创建 MinGW-w64 的快捷方式,一般默认勾选即可。
操作:确认安装目录没问题后,点击红框中的“Next”按钮,开始正式安装 MinGW-w64 。
四、开始下载 MinGW-w64 安装文件
说明:安装程序开始连接服务器,并从中下载 MinGW-w64 的安装文件,下载速度取决于你所在的网络环境,下载所需的时间会有所不同,如果你有其他事情要做,可以点击“Cancel”按钮,取消本次安装。
操作:只需耐心等待。
五、下载完成后,点击Next按钮,最后点击Finish 按钮,安装完成。
方式1安装方式,比较直观,对于新手建议采用方式1来安装mingw-w64,但是对网络要求比较高。也可以采用直接下载对应的离线压缩包文件,然后直接解压即可。
下载链接:https://sourceforge.net/projects/mingw-w64/files/
以目前最新版的为例,下载离线文件列表如下:
根据方式1上面的说明,选择对应的离线压缩包,我按照自己的需求,下载的是:x86_64-posix-seh版本的。下载完成后,直接解压到指定的目录下,会生成一个mingw64文件夹,本人的路径是:D:\Program Files\mingw64,mingw64文件夹的树型结构如下所示:
说明:这些子文件夹和Linux下/usr/local目录下的结构很相似,这里就不再做说明了。
在电脑桌面,鼠标右击桌面图标【计算机】-->属性-->高级系统设置-->高级-->环境变量,有用户变量和系统变量。系统变量对所有用户有效,建议只在用户变量下进行配置。我的mingw64软件安装的路径为: D:\Program Files\mingw64
1、新建变量: PATH,变量值为:D:\Program Files\mingw64\bin
2、新建变量:LIB,变量值为:D:\Program Files\mingw64\lib
3、新建变量:INCLUDE,变量值为:D:\Program Files\mingw64\include
<Tips> Windows下的环境变量名是不区分大小写的,这点跟Linux系统是有所不同的,一般而言,是建议环境变量名使用大写。
配置完成后,点击“确定”按钮,使其生效。按下Windows+X,点击命令提示符,输入:gcc -v,如果配置成功就会打印出gcc的配置和版本信息,如下图所示:
说明:看打印的信息可以看到,我们使用的线程模型是:posix,gcc版本是8.1.0。
至此,在Windows下安装配置MinGW-w64已经完成,在接下来的开发中我们就可以使用GCC编译器编译源文件了。其中,编译C源文件使用gcc命令,而编译C++源文件则使用g++命令。
MinGW-w64安装教程—著名C/C++编译器GCC的Windows版本(在线安装方式)
在Windows中安装MinGW-w64