MinGW,是Minimalist GNU for Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时(C Runtime)库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95发行版以上的 Windows OS 有效,使用基本运行时,你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时(C Runtime)扩展,与基本运行时相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 WindowsAPI功能(该段内容来自百度百科)。
MinGW-w64是MinGW的64位版本,MinGW在多年前就已经将开发精力转移到64位系统上了,32位MinGW多年未曾更新了。以下的安装过程都建立在64位系统的基础上进行。
可以前往MinGW的官网进行下载:https://www.mingw-w64.org/downloads/
MinGW将其托管到sourceforge上了,也可以前往sourceforge下载:https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/?tdsourcetag=s_pctim_aiomsg
在sourceforge上下载的话选择install.exe文件下载即可,小编接下来采用的就是这种方式。使用可执行安装文件进行安装对新手来说比较友好。也可以采用免安装的形式来下载安装MinGW。最后,如果使用带MinGW的codeblock,可以直接跳到环境变量配置过程。
下载完install.exe文件后运行该软件,进入如下页面:
点击next进入安装配置;
选择安装的MinGW版本号,没有特殊要求的话(如果只是为了学习)直接安装最新版本即可:
选择系统架构,X86_64是64位系统,i686是32位系统。
选择操作系统接口协议:开发类Unix(linux,macOS,Unix等)系统的程序选择posix,开发Windows程序的选择win32即可。
选择异常处理类型:异常处理在开发中非常重要,在开发的过程中,大部分的时间会耗在处理各种异常情况上。seh 是新发明的,而 sjlj 则是古老的。seh 性能比较好,但不支持 32位。 sjlj 稳定性好,支持 32位。建议64位操作系统选择seh。
选择安装路径,点击next即可进入安装过程(需要联网下载MinGW的相应数据)。
安装完成后可以到相应的安装路径下看到这样的文件夹:
我们可以直接下载相应的MinGW的压缩包,解压也可得到上面安装后的文件夹。以上述的安装版本为例,我们要选择的安装版本如下图所示:
安装完MinGW后需要进行环境变量的配置,在环境变量中的path变量中添加上面文件夹内的bin文件夹即可:
在命令提示符中输入gcc-v或者g++ -v,如果有输出内容,则证明配置成功。
使用记事本或者代码编辑器写一段程序(这里不推荐使用记事本,小编使用vscode)。
首先通过命令行进入你准备要创建文件的目录下进行后续操作。
编译过程分为四个步骤:预处理、编译、汇编、链接。
1.预处理
预处理主要处理源文件中的“#include”、“#define”等预处理命令。
预处理主要完成的工作有:
(1)删除#define,展开宏;
(2)处理条件编译指令,预处理程序先判断条件,在根据条件修改源代码;
(3)删除注释;
(4)添加行号,以及文件名标识,便于调试
(5)删除“#include”,插入相应的头文件;
使用g++ -E test.cpp -o test.i命令,预处理后得到test.i文件
2.编译
生成汇编代码的过程,使用命令g++ -S test.i -o test.s.生成汇编文件test.s文件,当然直接从test.cpp文件得到汇编文件也可以。
3.汇编
将汇编代码转化成机器指令,生成目标二进制代码。
使用命令g++ -c test.s -o test.o生成test.o文件
4.链接
通过链接库文件,将目标文件转化成可执行文件
使用命令g++ test.o -o test.exe
当然,一般情况下,可以直接使用g++ test.cpp -o test 就可以生成可执行程序了。
最后使用命令test.exe,即可运行程序。
也可以直接点击exe文件进行运行。