MinGW (Minimalist GNU for Windows) 是一个在 Windows 平台上使用 GNU 工具链的开发环境。

Warning

经过实践,非常不建议使用 MinGW 环境,如果想要类 Unix 命令环境,还不如使用 WSL

MinGW 的一个致命问题是:安装 MinGW 后打开的终端 HOME 就是 C:\msys64\home\<user>, 一些加入系统 Path 的路径下的可执行文件都识别不了,而 Git Bash、Nushell、PWSH 的 $HOME 和 Windows 是一致的, 都是 C:\Users\<user>

如果实在是有 MinGW 构建的需求,建议使用容器。

1 什么是 MinGW

1.1 核心概念

MinGW(Minimalist GNU for Windows)是一个将 GNU 编译工具链移植到 Windows 平台 的项目,允许你在 Windows 上使用 gccg++ 等 GNU 工具编译生成原生 Windows 可执行程序(.exe)

1.2 主要特点

特征说明
基于 GNU 工具链使用 GNU 编译器(GCC)、链接器(LD)、调试器(GDB)等
生成原生 Windows 程序不依赖 POSIX 兼容层(不像 Cygwin)
轻量、开源、跨平台可移植性好,适合 C/C++ 开发
功能有限不支持完整 POSIX API,比如 fork(),因此移植某些 Unix 软件困难
社区维护度较低(MinGW 原版)推荐使用 MinGW-w64 替代

1.3 MinGW 的组成(常见可执行文件)

可执行文件作用
gcc.exe / g++.exeC/C++ 编译器
ld.exe链接器
as.exe汇编器
ar.exe静态库打包工具
gdb.exe调试器
strip.exe / nm.exe二进制工具
dlltool.exe / windres.exeWindows 资源处理工具

2 MinGW 与其他工具的对比

跨平台方案

方案对比

跨平台方案平台是否支持原生 Windows支持 64 位POSIX 支持调试支持运行时依赖生态兼容性说明
MinGWWindows❌(原版仅 32 位)GDB老旧最早的 Windows GNU 工具链,已不维护,建议避免使用。
MinGW-w64WindowsGDB良好是 MinGW 的现代 fork,支持 32/64 位,推荐使用。📌 现代开发中,“MinGW” 通常指代 MinGW-w64
MSYS2Windows✅(依赖工具链类型)✅(Shell 工具支持 POSIX)GDB/LLDB开发环境需要 msys-2.0.dll优秀提供 bash + pacman + MinGW-w64 工具链的开发环境;自身程序依赖 POSIX DLL,构建程序可选原生/非原生。
CygwinWindows❌(运行时模拟 POSIX)✅(完整 POSIX)GDBcygwin1.dllPOSIX 生态提供完整 POSIX 环境,适合将 Linux 程序移植到 Windows;但生成的程序依赖 cygwin1.dll,不是纯原生。
MinGW-LLVMWindowsLLDB良好基于 LLVM 的 MinGW 发行版,结合 Clang 编译器与 MinGW-w64 运行时,提供更好的编译性能和错误诊断。
Intel oneAPI跨平台Intel Inspector/VTuneIntel Runtime专业Intel 的现代编译器套件,支持高性能计算,优化针对 Intel CPU,提供专业的性能分析工具。
TDM-GCCWindowsGDB中等MinGW-w64 的打包发行版,预配置适合 Windows 开发,包含必要的库和工具,安装简便。
w64devkitWindows✅(有限)GDB良好轻量级便携式 MinGW-w64 开发环境,单个压缩包包含完整工具链,适合快速部署。
Zig跨平台LLDB/GDB新兴新兴系统级语言,可作为 C/C++ 编译器的替代品,内置交叉编译支持,无需外部依赖。
WSLWindows❌(Linux 子系统)✅(完整 Linux 环境)GDB/LLDB无(虚拟化)Linux 生态Windows Subsystem for Linux,提供真正的 Linux 环境,可运行 Linux 二进制文件,但不直接生成 Windows 原生程序。
Emscripten跨平台✅(通过 WebAssembly)浏览器调试工具浏览器运行时Web 生态基于 LLVM,将 C/C++ 编译为 WebAssembly,在浏览器中运行,也可通过 Node.js 在命令行运行。
指向原始笔记的链接

3 安装方式

3.1 使用 MSYS2 安装(推荐)

参考官网

3.2 使用 MinGW-w64 官网发行版

参考官网


更多参考: