MingW-W64-builds那么多版本,他们的区别是什么呢?

mingw-w64多个文件区别介绍:

i686-13.1.0-release-posix-dwarf-msvcrt-rt_v11-rev1.7z
i686-13.1.0-release-posix-dwarf-ucrt-rt_v11-rev1.7z
i686-13.1.0-release-win32-dwarf-msvcrt-rt_v11-rev1.7z
i686-13.1.0-release-win32-dwarf-ucrt-rt_v11-rev1.7z
x86_64-13.1.0-release-posix-seh-msvcrt-rt_v11-rev1.7z
x86_64-13.1.0-release-posix-seh-ucrt-rt_v11-rev1.7z
x86_64-13.1.0-release-win32-seh-msvcrt-rt_v11-rev1.7z
x86_64-13.1.0-release-win32-seh-ucrt-rt_v11-rev1.7z
winlibs-i686-mcf-dwarf-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r5.zip
winlibs-i686-mcf-dwarf-gcc-13.1.0-mingw-w64ucrt-11.0.0-r5.zip
winlibs-i686-posix-dwarf-gcc-13.1.0-llvm-16.0.5-mingw-w64msvcrt-11.0.0-r5/
winlibs-i686-posix-dwarf-gcc-13.1.0-llvm-16.0.5-mingw-w64msvcrt-11.0.0-r5.7z
winlibs-i686-posix-dwarf-gcc-13.1.0-llvm-16.0.5-mingw-w64ucrt-11.0.0-r5.7z
winlibs-x86_64-mcf-seh-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r5.zip
winlibs-x86_64-mcf-seh-gcc-13.1.0-mingw-w64ucrt-11.0.0-r5.zip
winlibs-x86_64-posix-seh-gcc-13.1.0-llvm-16.0.5-mingw-w64msvcrt-11.0.0-r5/
winlibs-x86_64-posix-seh-gcc-13.1.0-llvm-16.0.5-mingw-w64msvcrt-11.0.0-r5.7z
winlibs-x86_64-posix-seh-gcc-13.1.0-llvm-16.0.5-mingw-w64ucrt-11.0.0-r5.7z

MinGW-w64是一个免费的开源C库,用于针对Windows 32位和64位平台。

  • i686x86_64 的区别是指编译器的目标架构。这两者之间有一些区别,例如在寄存器数量和大小,内存寻址,指令集等方面。
    • i686 是 32 位的 x86 架构,另外Win32 - i686 - Windows 32 位版本,本机运行并针对 Windows 32 位进行编译(也可在 Windows 64 位上运行,但在 32 位模式下)
    • x86_64 是 64 位的 x86 架构。Win64 - x86_64 - Windows 64 位版本,本机运行并针对 Windows 64 位进行编译(不会在 Windows 32 位上运行)
  • posixwin32 的区别是指编译器使用的线程模型。posix 是一种 UNIX API 标准,而 win32 是 Windows 的 API 标准。这两者之间有一些区别,例如在 mingw-w64 中,使用 posix 线程将启用 C++11/C11 多线程功能,并使 libgcc 依赖于 libwinpthreads。而使用 win32 线程则不会启用 C++11 多线程功能。
  • MCF是MCF Gthread是Windows 7及更高版本的线程支持库,它实现了gthread接口集,GCC在内部使用它来提供本地静态对象的初始化同步,libstdc++在内部使用它来提供C++11线程工具。
  • sehdwarf 的区别是指编译器使用的异常处理模型。
    • seh 的意思是结构化异常处理(Structured Exception Handling),是一种在 Windows 上处理异常的机制。seh 可以处理硬件异常(如除零错误)和软件异常(如访问无效内存)。seh 也可以与 C++ 异常兼容。
    • dwarf 是一种在 Linux 上处理异常的机制,它使用了一种叫做 DWARF 的调试信息格式来描述程序的结构和行为。dwarf 可以处理 C++ 异常,但不能处理硬件异常。
  • msvcrt 的意思是 Microsoft Visual C++ 运行时(Microsoft Visual C++ Runtime),是一个提供 C 标准库函数的动态链接库。msvcrt 是 Windows 系统自带的,但由于向后兼容性的问题,它没有完全遵循 C99 标准,并且缺少一些功能。
  • ucrt 的意思是通用 C 运行时(Universal C Runtime),是一个提供 C 标准库函数的动态链接库。ucrt 是 Windows 10 及更新版本的系统自带的,它遵循了 C99 和 C11 标准,并且提供了一些额外的功能。
  • GDB - GNU 工程调试器
  • GNU Binutils - 二进制工具的集合
  • GNU Make - 一个控制可执行文件和其他非源文件生成的工具
  • Yasm - Yasm 模块化汇编程序项目
  • NASM - 全网汇编程序
  • JWasm - 一个免费的MASM兼容汇编程序
  • LLVM/Clang/LLD/LLDB - LLVM 编译器基础结构

参考:
mingw-w64 threads: posix vs win32 - Stack Overflow
【软件教程】MingW-W64-builds不同版本之间的区别 - CSDN博客
What is SEH? - Stack Overflow
SEH (Structured Exception Handling) - Win32 apps | Microsoft Docs
Differences between msvcrt, ucrt and vcruntime libraries
MSVCRT vs UCRT - MinGW-w64
wiki.dwarfstd.org/Exception_Handling.md
WinLibs - GCC+MinGW-w64 compiler for Windows
GitHub - lhmouse/mcfgthread:Windows 上最高效的 std::thread for mingw-w64 的基石

  • 16
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
mingw-w64-builds 和 llvm-mingw 都是为 Windows 平台提供的开发工具集。 mingw-w64-builds 是一个基于 MinGW(Minimalist GNU for Windows)的项目,旨在为 Windows 提供一个开发环境,使开发者能够使用 GNU 工具链(如 GCC 编译器)来编译 Windows 下的应用程序。mingw-w64-builds 支持 32 位和 64 位的 Windows 平台,并提供了一系列开发工具和库,如 GCC 编译器、GDB 调试器、MSYS2 等。mingw-w64-builds 的目标是提供一个免费、开源、易于使用的开发环境,使开发者能够方便地在 Windows 上进行 C/C++ 开发。 llvm-mingw 则是基于 LLVM(Low Level Virtual Machine)的一个 MinGW 工具集。LLVM 是一个 modulable 编译器和工具链的项目,它提供了一组可扩展的工具,适用于多种编程语言。llvm-mingw 则是将 LLVM 和 MinGW 结合起来,为 Windows 平台提供了一套完整的开发工具链。通过使用 llvm-mingw,开发者可以使用 LLVM 提供的优秀代码生成能力,将高级语言代码(如 C、C++)编译为高效的机器码。llvm-mingw 提供了基于 LLVM 的编译器 Clang、调试器 lldb、库等工具,为开发者提供了一个现代化、高效的 Windows 开发环境。 mingw-w64-builds 和 llvm-mingw 都在为 Windows 平台上的开发者提供更好的开发工具支持,使他们能够更方便地进行应用程序的开发和调试。根据个人的需求和喜好,开发者可以选择适合自己的工具集来进行开发工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ha-Ha-Interesting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值