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 上使用
gcc、g++等 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++.exe | C/C++ 编译器 |
ld.exe | 链接器 |
as.exe | 汇编器 |
ar.exe | 静态库打包工具 |
gdb.exe | 调试器 |
strip.exe / nm.exe | 二进制工具 |
dlltool.exe / windres.exe | Windows 资源处理工具 |
2 MinGW 与其他工具的对比
跨平台方案
方案对比
指向原始笔记的链接
跨平台方案 平台 是否支持原生 Windows 支持 64 位 POSIX 支持 调试支持 运行时依赖 生态兼容性 说明 MinGW Windows ✅ ❌(原版仅 32 位) ❌ GDB 无 老旧 最早的 Windows GNU 工具链,已不维护,建议避免使用。 MinGW-w64 Windows ✅ ✅ ❌ GDB 无 良好 是 MinGW 的现代 fork,支持 32/64 位,推荐使用。📌 现代开发中,“MinGW” 通常指代 MinGW-w64。 MSYS2 Windows ✅(依赖工具链类型) ✅ ✅(Shell 工具支持 POSIX) GDB/LLDB 开发环境需要 msys-2.0.dll 优秀 提供 bash + pacman + MinGW-w64 工具链的开发环境;自身程序依赖 POSIX DLL,构建程序可选原生/非原生。 Cygwin Windows ❌(运行时模拟 POSIX) ✅ ✅(完整 POSIX) GDB cygwin1.dll POSIX 生态 提供完整 POSIX 环境,适合将 Linux 程序移植到 Windows;但生成的程序依赖 cygwin1.dll,不是纯原生。MinGW-LLVM Windows ✅ ✅ ❌ LLDB 无 良好 基于 LLVM 的 MinGW 发行版,结合 Clang 编译器与 MinGW-w64 运行时,提供更好的编译性能和错误诊断。 Intel oneAPI 跨平台 ✅ ✅ ✅ Intel Inspector/VTune Intel Runtime 专业 Intel 的现代编译器套件,支持高性能计算,优化针对 Intel CPU,提供专业的性能分析工具。 TDM-GCC Windows ✅ ✅ ❌ GDB 无 中等 MinGW-w64 的打包发行版,预配置适合 Windows 开发,包含必要的库和工具,安装简便。 w64devkit Windows ✅ ✅ ✅(有限) GDB 无 良好 轻量级便携式 MinGW-w64 开发环境,单个压缩包包含完整工具链,适合快速部署。 Zig 跨平台 ✅ ✅ ✅ LLDB/GDB 无 新兴 新兴系统级语言,可作为 C/C++ 编译器的替代品,内置交叉编译支持,无需外部依赖。 WSL Windows ❌(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 官网发行版
参考官网
更多参考: