什么是MinGW
- MinGW(Minimalist GNU for Windows)是一个把 GNU 工具链(gcc/g++、binutils 等)移植到 Windows 的项目,能生成原生 Win32 可执行文件。
- 它不做 POSIX 仿真(不是 Cygwin);生成的程序链接到 Microsoft 的 C 运行时(msvcrt)。
- 原始 MinGW 项目主要面向旧的 32 位环境,更新较慢。
什么是 MinGW‑w64
- MinGW‑w64 最初是 MinGW 的一个分支/重写,目标是支持 64 位(x86_64)并同时保持对 32 位(i686)的支持。
- 提供更完整的 Windows API 头文件、Unicode 支持、改进的异常/线程处理(如 SEH/DWARF 支持),并支持更现代的 GCC 版本。
- MinGW 是把 GNU 工具链带到 Windows 的早期项目,偏向旧的 32 位;MinGW‑w64 是更现代、更全面并支持 64 位的分支/重写,通常是现在的首选。
安装MinGW-w64
下载
直接前往github下载MinGW-w64
链接:niXman/mingw-builds-binaries-release

各个版本的区别
-
i686 和 x86_64
- i686 是 32 位的 x86 架构。
- x86_64 是 64 位的 x86 架构。
-
posix、win32、MCF
- POSIX(Portable Operating System Interface)是一组标准接口/行为(由 IEEE 定义),常见于类 Unix 系统(Linux、macOS、BSD 等)。它规定了系统调用、命令行工具、shell 行为、文件权限、进程/信号语义等。
- Win32 是 Windows 操作系统的原生 API 集合(也指 Windows 平台整体语义)。它基于 Windows 特有的对象(HANDLE、COM、Win32 线程/进程模型等),与 POSIX 接口在很多地方不同。
- MCF Gthread是Windows 7及更高版本的线程支持库,它实现了gthread接口集,GCC在内部使用它来提供本地静态对象的初始化同步,libstdc++在内部使用它来提供C++11线程工具。
-
seh 和 dwarf
- seh 的意思是结构化异常处理(Structured Exception Handling),是一种在 Windows 上处理异常的机制。seh 可以处理硬件异常(如除零错误)和软件异常(如访问无效内存)。seh 也可以与 C++ 异常兼容。
- dwarf 是一种在 Linux 上处理异常的机制,它使用了一种叫做 DWARF 的调试信息格式来描述程序的结构和行为。dwarf 可以处理 C++ 异常,但不能处理硬件异常。
-
msvcrt 和 ucrt
- msvcrt 的意思是 Microsoft Visual C++ 运行时(Microsoft Visual C++ Runtime),是一个提供 C 标准库函数的动态链接库。msvcrt 是 Windows 系统自带的,但由于向后兼容性的问题,它没有完全遵循 C99 标准,并且缺少一些功能。
- ucrt 的意思是通用 C 运行时(Universal C Runtime),是一个提供 C 标准库函数的动态链接库。ucrt 是 Windows 10 及更新版本的系统自带的,它遵循了 C99 和 C11 标准,并且提供了一些额外的功能。
对于一般在Win11系统上 学习使用C/C++ 可以选择 x86_64-win32-seh-ucrt
安装
直接将压缩文件解压至任意位置即可

解压后将\mingw64\bin添加至系统环境变量即可
检查
输入 gcc -v 或者 gcc -version 确认安装完成

在VScode中使用
搜索安装 C/C++ Extension Pack 插件

打开任意文件夹,编写一个简单的c++程序

如遇到头文件报错: 检测到 #include 错误。请更新 includePath。说明 VSCode 未识别到本地编译器。需要确保环境变量中正确设置 \mingw64\bin 路径,并重新启动 VSCode 更新环境变量。
通常情况下,在新版 C/C++ 插件中,将会自动完成相关配置,无需手动设置 lunch.json 与 task.json
单击 F5 选择 c++ (GDB/LLDB) 作为调试器

选择 g++.exe 作为 c++ 编译器

调试控制台将显示相关调试信息

终端中将显示程序标准输出

