MinGW64
Windows 上的开源 GCC 工具链,直接生成原生 exe/dll,不需要额外运行库;支持 32 位 x86、64 位 x64 与 ARM64
安装教程
MinGW-w64 是 Windows 平台上的开源编译工具链,本质是把 GNU 工具链(GCC、binutils、GDB)移植到 Windows,并配一套自带的 C 运行库,编译出来的 exe 与 dll 直接依赖系统自带的 msvcrt.dll,不需要像 Cygwin 那样附带一层 POSIX 模拟 DLL。它是早期 MinGW 项目的分支,补齐了 64 位与 ARM64 支持,也修掉了原项目长期不更新的问题。
组件构成:gcc / g++ / gfortran 编译器前端、binutils(ld、as、ar、objdump 等)、mingw-w64 运行时 CRT 与头文件、winpthreads 线程库,部分发行版还带 GDB 调试器和 mingw32-make。目标架构覆盖 32 位 x86、64 位 x64 与 ARM64 Windows。
选型时有两个参数必须注意,装错了后面很难改:一是异常模型,64 位推荐 SEH(性能与栈展开最好),SJLJ 兼容性最广但明显更慢,DWARF 只在 32 位有意义;二是线程模型,win32 线程模型编译快、体积小,但不支持 std::thread、std::mutex 等 C++11 并发设施,要用这些必须选 posix 线程模型(会依赖 libwinpthread)。
MinGW-w64 本身是源码级的项目,实际下载到的是各家打的包:MSYS2(用 pacman 管理,生态最全)、WinLibs(单个压缩包,更新及时)、mingw-builds 等,不同包里的 GCC 版本、默认异常与线程模型、是否带 GDB 都不一样,拿到安装包后建议先 gcc -v 看一眼配置串。
使用方式是解压后把 bin 目录加入 PATH,或者只在该项目的构建脚本里临时指定;和 CMake、Qt、VS Code 配合时把工具链路径指向这个 bin 即可。需要留意 ABI:MinGW 与 MSVC 的 C++ 名字修饰和异常处理机制都不兼容,直接链接 MSVC 编译的 C++ 库会失败,跨编译器复用库要走 C 接口或在同一工具链下重新编译。
开源软件,按 GPL 等相应许可证使用;具体 GCC 版本与打包内容以所用发行版说明为准。