MinGW 简介:
MinGW,是Minimalist GNUfor Windows的缩写。
它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,
允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。
(以上来自百度百科)。
MinGW 它实际上是将经典的开源 C语言 编译器 GCC 移植到了Windows 平台下,并且包含了 Win32API ,
因此可以将源代码编译为可在 Windows 中运行的可执行程序。而且还可以使用一些 Windows 不具备的,
Linux平台下的开发工具。一句话来概括:MinGW 就是 GCC 的Windows 版本 。
以上是 MinGW 的介绍,MinGW-w64 与 MinGW 的区别在于 MinGW 只能编译生成32位可执行程序,而MinGW-w64
则可以编译生成 64位 或 32位 可执行程序。
MinGW 现已被 MinGW-w64 所取代,且 MinGW 已停止更新。
这里选择安装MinGW-w64
有两种安装方式:离线版和在线安装,任意选择其中一种方式安装即可
离线版本安装很简单方便,主要是需要知道安装哪一种离线版本
本文主要是讲解在线版本安装,离线版本安装就不在话下,在文章最后再简单说下离线版本的安装。
MinGW-w64官方下载链接:
MinGW-w64
在线安装版本
MinGW-W64-install.exe
如下图:
离线版
离线版有很多种,根据安装本机的系统和开发程序的运行环境决定选择哪一种版本
我的本机是Windows10 64bit 和 Windows11 64bit, 只在Windows下运行,都是选择x86_64-win32-seh
,当然也可以选择x86_64-win32-sjlj
下载链接:
x86_64-win32-seh
如下图:
离线版安装很简单,下载完离线包,解压后,配置好环境变量即可完成,
双击MinGW-W64-install.exe
安装包进行在线安装
MinGW-w64 版本选择
说明:在这个界面,你可以根据所要搭建的开发环境,选择不同的选项,从而下载所需的组件。
操作:选择 Version、Architecture、Threads、Exception、Build revision 下拉列表中适当的选项,接下来将会详细介绍这些选项。
[Version]
选择 gcc 版本
说明:Version 指的是 gcc 的版本,如果没有特殊的需求,一般选择最高的版本号即可。
操作:在这个版本中,最高版本是 8.1.0 ,选中它即可。
[Architecture]
选择电脑系统架构
说明:Architecture 是指电脑系统是 32位 还是 64位,根据你的电脑系统做出对应选择。
操作:我的电脑系统是 64位 的,所以我选择了 x86_64,如果你是 32位 系统,则选择 i686 即可。
[Threads]
选择操作系统接口协议
说明:这个世界上只有两种操作系统,符合 posix 协议的,和 Windows 。如果你想要开发 Windows 程序,需要选择 win32 ,而开发 Linux、Unix、Mac OS 等其他操作系统下的程序,则需要选择 posix 。
操作:我只开发在 Windows 下运行的程序,所以选择了 win32 。
[Exception]
选择异常处理模型(64位)
说明:异常处理在开发中非常重要,你在开发的过程中,大部分的时间会耗在处理各种异常情况上。如果你之前选择了 64位,则这里有两个异常处理模型供你选择,seh 是新发明的,而 sjlj 则是古老的。seh 性能比较好,但不支持 32位。 sjlj 稳定性好,支持 32位。
操作:我这里选择了 seh 。
[Exception]
选择异常处理模型(32位)
说明:选择了 32位 后,则可以用 dwarf 和 sjlj 两种异常处理模型。同样的,dwarf 的性能要优于 sjlj ,可是它不支持 64位 。
操作:建议选择 dwarf 。
[Build revision]
建立修订
说明:暂时没弄明白是做什么的。(知道的人请留言)
操作:选择默认选项。
MinGW-w64 版本选择完成
说明:红框中就是我的 MinGW-w64 安装配置单,gcc 是 8.1.0 版本,系统架构是 64位,接口协议是 win32,异常处理模型是 seh,Build revision 是 0 。
操作:点击“Next”按钮,进入下一个步骤。
选择 MinGW-w64 的安装目录
说明:在这里选择 MinGW-w64 将要安装到哪个目录中去。安装程序默认会将 MinGW-w64 安装在 C盘 ,而在 Windows 操作系统中 C盘 是系统盘,操作系统会被安装在这个盘里,而按照一般的习惯,我们尽量不把应用软件安装载系统盘里。因为以前的电脑使用的是机械硬盘,而机械硬盘频繁读写会降低效率,所以尽量将操作系统与应用软件放在不同的硬盘分区下。当然,现在的电脑大部分都配备了固态硬盘(SSD),而且通常作为系统盘来使用,因此已经没有读写效率的问题了。所以如果你还在用机械键盘,就将 MinGW-w64 放到其他非系统盘里,如果使用固态硬盘,则可以放在安装程序提示的默认位置,或其他地方均可。
操作:点击红框中的“Browse”按钮,以便更改 MinGW-w64 的安装位置。
确认 MinGW-w64 安装目录
说明:界面中的 Space available 指的是你选择的目录,所在的硬盘分区的剩余空间,而 MinGW-w64 至少会占用 500 MB 的空间。Create shortcuts in Start Menu 是说在开始菜单创建 MinGW-w64 的快捷方式,一般默认勾选即可。
操作:确认安装目录没问题后,点击“Next”按钮,开始正式安装 MinGW-w64 。
开始下载 MinGW-w64 本体
说明:安装程序开始连接服务器,并从中下载 MinGW-w64 的本体文件,视乎你的网络环境,下载所需的时间会有所不同,如果你有其他事情要做,可以点击“Cancel”按钮,取消本次安装。
操作:只需等待。
MinGW-w64 下载完成
说明:MinGW-w64 已经下载完成,我们可以在之前选择的安装目录下,找到它的各种组件文件。
操作:点击“Next”按钮,继续下一个步骤。
关闭 MinGW-w64 安装程序
说明:MinGW-w64 的安装程序已经完成了它的使命,但 MinGW-w64 还没有安装完成,之后我们还需要进行一些配置,才能正常使用它编译源代码。
操作:点击“Finish”按钮,将关闭 MinGW-w64 安装程序。
MinGW-w64 安装目录
说明:MinGW-w64 下载完成后的安装目录,包含1个文件夹:mingw64,3个文件:mingw-w64.bat、uninstall.exe、uninstall.ini,和1个快捷方式:mingw-w64。虽然 MinGW-w64 已经下载完成,但并没有安装完成,我们还需要配置一下操作系统的环境变量,将 MinGW-w64 的 bin 目录加入其中,使操作系统可以找到那些编译工具。
操作:双击“mingw64”文件夹,进入其中。
MinGW-w64编译器安装好后需要添加相关环境变量以便vscode调用编译器。
在系统变量一栏中新建
C_INCLUDE_PATH :对应MinGW目录下include文件夹
LIBRARY_path :对应MinGW目录下lib文件夹
Path中添加编译器目录:对应MinGW目录下bin文件夹 如下图:
编辑环境变量,添加对应MinGW目录下bin文件夹路径
最后在cmd终端中输入命令测试安装MinGW64和配置环境变量是否成功:
gcc -v //查看 gcc编译器版本号 gdb -v //查看 gdb调试器版本号
出现如图类似内容即为安装成功:
VSCode(全称:Visual Studio Code)是一款由微软开发且跨平台的免费源代码编辑器。VSCode官方下载地址
VS code简介 Visual Studio Code(简称“VS Code”) 是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代Web和云应用的跨平台源代码编辑器,可在桌面上运行,并且可用于Windows,macOS和Linux。它具有对JavaScript,TypeScript和Node.js的内置支持,并具有丰富的其他语言 (例如C++,C#,Java,Python,PHP,Go)和运行时(例如.NET和Unity)扩展的生态系统。
安装过程可以直接使用next即可,VSCode 安装路径默认加入到系统环境变量中的
打开扩展, 输入Chinese搜索安装中文包,点击安装中文包插件即可, 界面如下图:
中文插件安装完成,需要重启VSCode,设置中文菜单才能生效
VS code是功能强大的文本编辑器,可以通过安装扩展的方式增加其功能。 为了使其支持c/c++,我们需要在扩展中添加
安装C/C++插件,扩展-->搜索C/C++-->安装,如下图:
在任意处新建一文件夹,用VS code将其打开,单击文件夹名右侧第一个图标新建源代码文件
随便写点代码后点击左侧第四个运行与调试图标
依次选择C++(GDB/LLDB), 默认配置。此时会自动在当前目录下新建.vscode文件夹并生成lauch.json
将其中代码更改如下 将光标放在标签上可以显示此标签的意义
{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "gcc.exe - 生成和调试活动文件", // 显示名称,可以自定义 "type": "cppdbg", // 不要更改 "request": "launch", //请求配置类型,可以为 “launch”(启动)或 “attach”(附加) "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", //用于调试的目标程序 "args": [], "stopAtEntry": false, //在程序入口处停止,一般不更改 "cwd": "${fileDirname}", //目标的工作目录, "environment": [], "externalConsole": false, "MIMode": "gdb", //只能为gdb "miDebuggerPath": "C:\\Myinstall\\MinGW\\bin\\gdb.exe", //gdb的路径 "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "C/C++: gcc.exe 生成活动文件" //在启动调试之前默认先编译,以便生成目标程序 } ] }
注意:所有路径中“\”需要用转义字符,不然要不vscode报错,要不编译器报错。 随后配置gdb编译任务。 首先编辑窗口切回源代码文件,vscode默认生成当前正在编辑的文件;在运行与调试选项卡最上面点击绿色的三角形开始调试,此时运行会出错提示找不到任务“(gdb) 启动”,点击弹窗的配置任务并选择g++生成活动文件,将代码改为:
注意"miDebuggerPath"路径设置为自己电脑安装MinGW路径的gdb.exe
{ "tasks": [ { "type": "cppbuild", "label": "C/C++: gcc.exe 生成活动文件", //更改名字与 lauch.json 文件中 “preLaunchTask” 描述相同即可 "command": "C:\\Myinstall\\MinGW\\bin\\gcc.exe", //编译器完整路径 "args": [ "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "调试器生成的任务。" }, ], "version": "2.0.0" }
注意"command"路径设置为自己电脑安装MinGW路径的g++.exe
更改完成后保存tasks.json
文件再运行即可,若程序闪退,则可以在return 0;语句前加入getchar(); 或者system("pause");
注意: 此解决方案配置的编译脚本(tasks)只适用于单一源代码文件的编译任务。
VSCode还可以安装其他插件,使开发更友善与快捷。
MinGW64的在线版本和离线版本只需要安装一种就可以了,对于没有网络或出差等,直接拷贝离线版本包,解压后配置下环境变量就可以了,非常方便。
离线版有很多种,根据安装本机的系统和开发程序的运行环境决定选择哪一种版本
我的本机是Windows10 64bit 和 Windows11 64bit, 只在Windows下运行,都是选择x86_64-win32-seh
,当然也可以选择x86_64-win32-sjlj
下载 MinGW-w64离线版本
各种版本的下载链接:官方下载链接
我选择的是:x86_64-win32-seh
如下图:
下载的其中一种MinGW64离线安装包x86_64-win32-seh
,如下图:
解压离线安装包
解压后,里面有一个mingw64
文件夹,内容如下图:
配置环境变量
可以把mingw64
文件夹拷贝到简单目录,比如C盘下C:\mingw64
,方便配置环境变量。
配置环境变量方式跟在线安装版本一样,参考上面的【2. 配置环境变量
】
离线版安装很简单,下载完离线包,解压后,再配置好环境变量即可完成.
最后在cmd终端输入命令gcc -v
测试下是否安装配置成功。