MinGW posix,win32,sjlj,warf,seh各版本的命名区别以及下载地址

⌚Time: 2021-08-29 12:03:15

👨‍💻Author: Jack Ge

回答来自AI

MinGW(Minimalist GNU for Windows)的版本命名涉及多个维度,以下是各版本命名的区别解析:

1. 线程模型(Threading Model)

这部分是posixwin32的区别:

2. 异常处理机制(Exception Handling)

这是sjljdwarfseh的区别:

sjlj(SetJump/LongJump)

dwarf(DWARF格式)

seh(Structured Exception Handling)

3. 架构对应关系

架构 可用异常处理 推荐选择
x86 (32位) sjlj, dwarf dwarf(性能更好)
x64 (64位) sjlj, seh seh(性能最好)

4. 常见组合示例

mingw-w64-i686-posix-dwarf      # 32位,POSIX线程,dwarf异常
mingw-w64-i686-posix-sjlj       # 32位,POSIX线程,sjlj异常
mingw-w64-i686-win32-sjlj       # 32位,Win32线程,sjlj异常
mingw-w64-x86_64-posix-seh      # 64位,POSIX线程,seh异常
mingw-w64-x86_64-win32-seh      # 64位,Win32线程,seh异常

5. 选择建议

开发场景推荐:

重要注意事项:

  1. 编译器必须与使用的库匹配:如果使用了posix线程的库,编译器也要选posix版本
  2. 64位开发首选seh:除非需要兼容旧系统
  3. 避免混用不同线程模型的库

6. 检查已安装版本

gcc -v

输出中会显示线程模型和异常处理信息。

实际选择时,建议优先考虑:


MinGW下载地址:

MinGW-64

MinGW-32