lilipo的编码小站

五个 MSYS2 环境的区别

发表于 2026-03-19

五个 MSYS2 环境的区别

MSYS2 提供了多个独立的子系统(环境),每个环境都有自己的一套工具链、库和默认编译目标。它们的核心区别在于:

  • 运行时依赖:生成的程序是依赖 MSYS2 的 POSIX 仿真层(msys-2.0.dll),还是直接调用 Windows API(原生 Windows 程序)。
  • 编译器:使用 GCC 还是 LLVM/Clang。
  • C 运行时库:链接到微软的 MSVCRT(旧版)还是 UCRT(新版)。
  • 目标架构:32 位还是 64 位。

具体说明如下:

环境名称 运行时 编译器 C 运行时 目标平台 主要用途
MSYS msys-2.0.dll (POSIX 层) GCC MSVCRT 任意 运行 Unix 工具,构建依赖 msys 的程序(如 bash、make)
MINGW32 原生 Windows GCC MSVCRT 32 位 编译 32 位原生 Windows 程序(传统)
MINGW64 原生 Windows GCC MSVCRT 64 位 编译 64 位原生 Windows 程序(传统)
UCRT64 原生 Windows GCC UCRT 64 位 编译 64 位原生 Windows 程序(使用现代 C 运行时)
CLANG64 原生 Windows Clang/LLVM UCRT 64 位 使用 Clang 编译 64 位原生 Windows 程序

补充说明

  • MSVCRT 是 Visual Studio 2013 及之前版本的 C 运行时,而 UCRT 是 Windows 10 引入的通用 CRT,与新版 Visual Studio 兼容性更好,推荐用于新项目。
  • 所有“原生 Windows”环境生成的程序都可以在没有 MSYS2 的 Windows 系统上直接运行(只要对应的运行时库存在)。
  • 虽然环境不同,但它们的包管理器是共用的,安装的包会放在 MSYS2 安装目录下的不同子文件夹中(如 mingw64clang64 等),同时也有公共目录如 opt

← 返回首页