1.MinGW64
MinGW-w64简单说就是Windows 上的“C/C++ 编译工具包”,让你能在 Windows 下编译出不需要额外装巨量运行库就能跑的.exe程序。
它是开源世界的标配工具,核心要点就 3 个:
出身:它是经典 MinGW 的升级版,主要贡献是为了支持64 位系统(原版只擅长 32 位)。
核心武器:内置了GCC(编译器)、GDB(调试器)和Binutils(链接器等)。它调用的不是微软的 MSVC,而是 Linux 同款的 GNU 工具链。
关键特性:使用Windows 原生 API,编译出的程序依赖
msvcrt.dll或ucrtbase.dll(系统自带),所以分发给用户时不用带一堆巨大的 DLL。实际使用中,你主要会见到这几种“形态”:
MSYS2(最推荐):在 Windows 上模拟 Linux 风格的包管理和终端,用它装 MinGW 最方便,还能用
pacman一键装依赖。
2.64位操作系统
64位操作系统,简单说就是一次能处理64位(8个字节)数据的系统,相当于电脑的“大脑”用更宽的车道运货。对比32位,它有3个你能直接感受到的飞跃:
内存支持巨大:32位最多认4GB内存(实际可用约3.2GB),而64位理论支持TB(太字节)甚至PB(拍字节)级内存。你现在电脑能插8G、16G内存正常用,全靠它。
运算速度更快:64位CPU内部寄存器更宽,处理长数字(如视频渲染、加密、大数据)时,单次操作能处理更多数据,效率直接翻倍。
安全性更强:硬件级支持DEP(数据执行保护)和内核补丁保护,对病毒和恶意代码的防御能力比32位高一个级别。
实际使用中的“坑”与匹配:
系统要匹配:64位CPU(现在几乎全是)必须装64位系统才能发挥全部性能。如果你装32位系统,哪怕内存16G,也只能用4G,白白浪费。
软件要区分:64位系统能同时运行64位和32位软件(32位软件会装在
Program Files (x86)文件夹);但32位系统绝对装不了64位软件。驱动不通用:硬件驱动必须严格匹配系统位数,64位系统装32位驱动会直接蓝屏。
3.msys2
MSYS2是Windows 上的“Linux 风格命令行环境”,你可以把它理解为给 Windows 穿的“Linux 马甲”。它让你在 Windows 下能直接用
apt-get式的命令(pacman)装软件,并跑那些原本只为 Linux 写的脚本。它的核心构成就 3 层:
包管理(核心亮点):内置
pacman(和 Arch Linux 同款)。你想装 GCC、Python、Git?一条pacman -S gcc全自动搞定,再也不用去网上找 exe 安装包。终端模拟:提供Mintty终端,支持
ls、grep、ssh等经典 Linux 命令,操作手感完全脱离 CMD 的束缚。软件仓库:官方维护了大量预编译好的开源软件,省去你在 Windows 上源码编译的噩梦。
它和 MinGW-w64 是什么关系(重点)?
MinGW-w64是编译器(工具链),负责把代码变成 .exe。
MSYS2是环境(舞台),它里面包含了 MinGW-w64。
通俗说:MSYS2 是“菜市场”(包管理器),MinGW-w64 是“厨具”(编译器)。你去 MSYS2 里用 pacman 命令,就能把 MinGW-w64 这套厨具买回来装上。
MSYS2 本质上就是在 Windows 上实现了一个“Bash Shell 环境”。安装 MSYS2 后,你打开的那个 Mintty 终端窗口,里面跑的就是Bash Shell。正是这个 Shell,让你能在 Windows 下敲
ls、grep、pacman -S gcc这些“类 Linux”命令。不同系统的 Shell 家族(重点区分)
Unix/Linux 世界(含 macOS):
Bash(最主流):绝大多数 Linux 发行版的默认 Shell。
Zsh:功能更强,现在 macOS 默认用它。
Sh:最老的原始版本。
4.ucrt64
UCRT64是 MSYS2 提供的一种编译环境。你可以把它理解为 MSYS2 里一个专门配置好的“工作台”,它使用GCC 编译器,生成64位的 Windows 程序,并且这些程序会链接到微软较新的UCRT(Universal C Runtime,通用C运行时库)
为了让你更清晰地理解它,我们把它和之前可能见过的MINGW64环境放在一起对比。它们最大的区别就在于链接的C 运行时库(C Runtime Library,简称 CRT)不同
UCRT64 的优势与适用场景
从上表能看出,UCRT64 之所以成为官方推荐,是因为它解决了 MINGW64 的一些核心痛点:
拥抱现代标准:UCRT 是微软为 Visual Studio 提供的现代运行时,这让 UCRT64 环境下的 GCC 编译出的程序能更好地兼容 C/C++ 新标准,行为也更符合预期。
告别乱码烦恼:对 UTF-8 的良好支持,意味着编译或操作包含中文路径、中文内容的文件时,遇到编码问题的概率大大降低。
与 MSVC 世界接轨:如果你需要链接由 Visual Studio 编译的第三方库,使用 UCRT64 环境会更顺畅,不容易遇到底层数据结构的兼容问题