🧁 mingw64版本区别
| 属性 | mingw64 | ucrt64 | clang64 | clangarm64 |
|---|---|---|---|---|
| 编译器 | GCC | GCC | Clang/LLVM | Clang/LLVM |
| 目标架构 | x86_64 (64位) | x86_64 (64位) | x86_64 (64位) | ARM64 |
| 运行时库 | msvcrt | ucrt | ucrt | ucrt |
| C库 | MSVCRT | UCRT | UCRT | UCRT |
| C++标准库 | libstdc++ | libstdc++ | libc++/libstdc++ | libc++/libstdc++ |
| 适用场景 | 传统64位程序开发 | 现代Windows开发(Win10+)、兼容性更好 | LLVM生态集成、跨平台开发 | ARM设备Windows开发(如Surface Pro X) |
| ABI兼容性 | 旧版Windows | 现代Windows(MSVC) | 现代Windows(MSVC) | 现代Windows(MSVC) |
| 支持的C标准 | C89/C99(部分支持) | C11/C17(完整支持) | C11/C17/C23(部分支持) | C11/C17/C23(部分支持) |
关键区别说明¶
1. 运行时库¶
-
msvcrt:旧版Microsoft C运行时库(WinXP~Win7兼容,但功能受限)。
-
ucrt:通用C运行时库(Win10+默认),支持完整C11/C17标准,兼容现代MSVC程序。
2. 编译器¶
- GCC:传统MinGW工具链,依赖GNU生态。
- Clang:支持更现代的C/C++标准(如C++20/23),更好的MSVC兼容性。
3. 目标架构¶
- x86_64:主流64位Windows程序。
- ARM64:专为ARM架构Windows设备优化(如高通芯片设备)。
4. C++标准库¶
- libstdc++:GCC配套库,兼容性好但更新较慢。
- libc++:Clang默认库,支持最新C++标准,但需注意兼容性。
5. 适用场景¶
- 需要兼容旧版Windows(Win7或更早):
mingw32/mingw64。 - 现代Windows开发(Win10+)或与MSVC交互:
ucrt64。 - 使用Clang特性或跨平台代码:
clang64/clangarm64。