MinGW 简介
MinGW (Minimalist GNU for Windows) 是一个免费且开源的软件开发环境,旨在为 Windows 平台提供原生(native)的 GNU 工具集。简单来说,它让你能够在 Windows 上编译和运行原本为 Linux/Unix 系统设计的 C、C++ 和 Fortran 程序,而无需依赖庞大的运行时环境,如 Cygwin。
核心组件
- GCC (GNU Compiler Collection): 核心的编译器套件,包括 C、C++、Objective-C、Fortran、Ada 等语言的编译器。
- GNU Binutils: 一组二进制工具,包括链接器 (ld)、汇编器 (as)、目标文件处理工具等,用于创建可执行文件和库。
- GNU Make: 一个构建自动化工具,用于根据 Makefile 文件中的规则自动编译和链接项目。
- Windows API Headers and Libraries: 提供 Windows API 的头文件和静态库,使得程序可以访问 Windows 的核心功能(如文件操作、窗口管理、网络通信等)。
主要特点
- 轻量级 (Minimalist): MinGW 的目标是提供一个精简的开发环境,只包含必要的工具和库。它避免了像 Cygwin 那样提供完整的 POSIX 兼容层,因此安装包更小,运行时开销也更低。
- 原生 Windows 应用 (Native): MinGW 编译出的程序是原生的 Windows 可执行文件 (EXE) 或动态链接库 (DLL)。它们不依赖于任何额外的运行时环境 (除了 Windows 本身),因此可以轻松地在其他 Windows 机器上运行,无需安装 MinGW。 这是与 Cygwin 的主要区别,Cygwin 程序需要 Cygwin1.dll 才能运行。
- 开源免费 (Free and Open Source): MinGW 是完全免费和开源的,遵循 GPL 和类似的自由软件许可证。
- 与 MSVC 兼容性 (Limited): MinGW 生成的代码通常与 Microsoft Visual C++ (MSVC) 不完全兼容。虽然它们都遵循 C/C++ 标准,但由于 ABI (Application Binary Interface) 的差异,由 MinGW 编译的库可能无法直接与 MSVC 编译的代码链接,反之亦然。 然而,MinGW 能够使用 MSVC 提供的 CRT (C Runtime Library)。
- 易于使用: MinGW 相对容易安装和配置。你可以使用命令行工具(如 GCC 和 Make)进行编译,也可以将其集成到各种 IDE(如 Code::Blocks、Eclipse CDT、Dev-C++ 等)中。
MinGW 和 MinGW-w64 的区别
- MinGW: 最初的 MinGW 项目主要针对 32 位 Windows 系统。它在 64 位 Windows 上也可以运行,但通常只能编译 32 位程序。
- MinGW-w64: 是一个独立的项目,从 MinGW 派生而来,但进行了扩展以支持 64 位 Windows 系统。它可以同时编译 32 位和 64 位程序。 现在,MinGW-w64 是更推荐使用的版本,因为它更活跃、功能更强大、支持更广泛。 当人们现在提到 “MinGW” 时,通常是指 MinGW-w64。
MinGW-w64 的主要优势
- 支持 64 位 Windows: 可以编译和运行原生的 64 位 Windows 应用程序。
- 更广泛的库支持: MinGW-w64 社区提供了许多预编译的第三方库,方便开发者使用。
- 更活跃的开发: MinGW-w64 项目比原始的 MinGW 项目更加活跃,Bug 修复和新功能添加更频繁。
- 线程模型选择: MinGW-w64 提供了两种线程模型:
posix
和win32
。posix
使用 pthreads 库,更接近 Unix/Linux 的线程模型,而win32
使用 Windows 原生的线程 API。 选择哪种模型取决于你的需求和代码的可移植性考虑。
安装 MinGW-w64 (推荐方法 - MSYS2)
MSYS2 是一个基于 Cygwin 和 MinGW-w64 的软件发行版和构建平台,提供了一个类似 Linux 的环境,并包含了包管理器 (Pacman),使得安装和管理 MinGW-w64 工具链及其他软件包变得非常容易。
下载 MSYS2: 从 MSYS2 官方网站 https://www.msys2.org/ 下载安装程序。
安装 MSYS2: 运行安装程序,并按照指示完成安装。
更新 MSYS2: 打开 MSYS2 终端 (通常在开始菜单中找到),并运行以下命令:
1
pacman -Syuu
如果提示关闭终端并重新打开,请照做,然后再次运行
pacman -Syuu
,直到没有更新为止。安装 MinGW-w64 工具链:
对于 64 位工具链:
1
pacman -S mingw-w64-x86_64-toolchain
对于 32 位工具链:
1
pacman -S mingw-w64-i686-toolchain
你也可以两个都安装。
添加 MinGW-w64 到 PATH 环境变量:
- 编辑系统环境变量 (搜索 “编辑系统环境变量”)。
- 在 “系统变量” 下找到
Path
变量,点击 “编辑”。 - 点击 “新建”,并添加 MinGW-w64 的
bin
目录路径。- 对于 64 位,通常是
C:\msys64\mingw64\bin
(根据你的 MSYS2 安装路径调整)。 - 对于 32 位,通常是
C:\msys64\mingw32\bin
。
- 对于 64 位,通常是
- 确定并关闭所有对话框。
验证安装: 打开一个新的命令提示符 (cmd) 或 PowerShell 窗口,输入以下命令:
1
2gcc --version
g++ --version如果显示 GCC 的版本信息,则表示安装成功。
总结
MinGW (特别是 MinGW-w64) 是一个优秀的工具,可以让你在 Windows 上使用 GNU 工具链进行 C/C++ 开发,生成原生的 Windows 应用程序。
推荐使用 MSYS2 来安装和管理 MinGW-w64,因为它提供了便捷的包管理和更新机制。
如果你需要构建跨平台应用程序,或者需要使用一些只在 Linux/Unix 上可用的库,MinGW 是一个很好的选择。 如果你需要与 MSVC 代码完全兼容,则应考虑使用 Microsoft Visual C++。