着急下载的小伙伴请直接转到:最新版 MinGW-w64 官方安装包下载(版本齐全)
MinGW 是 GNU GCC 编译器在 Windows 上的移植版本,开源免费。借助gcc处理 C 代码、g++处理 C++ 代码,命令行即可完成源码编译,输出 Windows 原生 exe 程序,无需依赖大型集成开发环境。
编译 C/C++ 源代码,原生 Windows 不提供编译器,完整 Visual Studio 安装包体积庞大,不适合只想简单编译代码的用户。
本文我们就实操 MinGW 的简单使用,掌握从源码到可执行程序的完整流程。
MinGW 下载
最新版 MinGW-w64 16.2.0 官方安装包下载地址,版本齐全:https://www.54benniao.com/a/j48jy6.html
为了方便下载安装,本文附带了不同系统和版本的安装包,可以按需要下载使用:
| 文件名 | 适用系统 | 说明 |
| x86_64-16.2.0-release-posix-seh-ucrt-rt_v14-rev1.7z | 64 位 | 绝大多数电脑选择这个,POSIX 线程 + UCRT 运行时。推荐 |
| x86_64-16.2.0-release-posix-seh-msvcrt-rt_v14-rev1.7z | 64 位 | POSIX 线程 + MSVCRT 运行时,兼容 Windows 7 等老系统。 |
| x86_64-16.2.0-release-win32-seh-ucrt-rt_v14-rev1.7z | 64 位 | Win32 线程 + UCRT 运行时,不需要 C++11 标准线程特性时可选。 |
| x86_64-16.2.0-release-win32-seh-msvcrt-rt_v14-rev1.7z | 64 位 | Win32 线程 + MSVCRT 运行时,兼容老系统的最小配置。 |
| x86_64-16.2.0-release-mcf-seh-ucrt-rt_v14-rev1.7z | 64 位 | MCF 线程 + UCRT 运行时,MCF 是 MinGW-w64 新一代线程模型。新型 |
| i686-16.2.0-release-posix-dwarf-ucrt-rt_v14-rev1.7z | 32 位 | POSIX 线程 + UCRT 运行时,适用于较旧的 32 位设备。 |
| i686-16.2.0-release-posix-dwarf-msvcrt-rt_v14-rev1.7z | 32 位 | POSIX 线程 + MSVCRT 运行时。 |
| i686-16.2.0-release-win32-dwarf-ucrt-rt_v14-rev1.7z | 32 位 | Win32 线程 + UCRT 运行时。 |
| i686-16.2.0-release-win32-dwarf-msvcrt-rt_v14-rev1.7z | 32 位 | Win32 线程 + MSVCRT 运行时。 |
| i686-16.2.0-release-mcf-dwarf-ucrt-rt_v14-rev1.7z | 32 位 | MCF 线程 + UCRT 运行时。 |
如果还没装好 MinGW,可以先参考这篇安装教程:https://www.54benniao.com/a/bxdinx.html
MinGW 使用
下面用一个简单的 C++ 项目演示 MinGW 的基本用法。
1) 准备项目文件:
新建一个项目文件夹(我使用“project”作为演示),创建一个“main.cpp”:
在“main.cpp”中写入下面这段代码:
int main() { std::cout << "Hello, MinGW!" << std::endl; return 0; }
2) 输入 cmd,回车:
3) 编译项目:
g++ main.cpp -o hello.exe
这里说明一下这一行命令的意义:
- g++:MinGW 中的 C++ 编译器命令,编译 C 语言代码使用 gcc 命令。
- main.cpp:要编译的源文件,多个源文件可以用空格分隔,比如 g++ main.cpp utils.cpp -o app.exe。
- -o hello.exe:指定输出的可执行文件名,省略时会默认生成 a.exe。这一步会调用编译器完成预处理、编译、汇编、链接,最终生成原生的 Windows 可执行文件。
4) 编译成功后,可执行文件“hello.exe”就在当前目录:
5) cmd 运行:
.\hello.exe
看到输出 Hello, MinGW! 就说明整个流程跑通了:
总结
MinGW 是 C/C++ 开发里十分好用的编译工具环境。我们可以利用 MinGW 在 Windows 平台直接完成代码编译与简单调试工作。不管是习惯了 Linux 开发的用户,还是做小型轻量项目,MinGW 都是体验极佳的方案。