posix win32(POSIX、Cygwin、MSYS、MSYS2、MinGW、MinGW-w
对于习惯了Linux上GCC编译器的朋友来说,总想在Windos上复制他们的经验,于是出现了各种方法将GCC编译器移植到Windos上的方法,那么哪种方法更好一些呢?这些方法之间又有什么联系呢?
POSIX
POSIX可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX 标准定义了操作系统应该为应用程序提供的接口标准,是 IEEE 为要在各种 UNIX 操作系统上运行的软件而定义的一系列 API 标准的总称,其正式称呼为 IEEE 1003,而国际标准名称为 ISO/IEC 9945。POSIX 标准意在期望获得源代码级别的软件可移植性。换句话说,为一个 POSIX 兼容的操作系统编写的程序,应该可以在任何其它的 POSIX 操作系统(即使是来自另一个厂商)上编译执行。
Cygin
Cygin是运行于Windos平台的POSIX"子系统",提供Windos下的类Unix环境,并提供将部分 Linux 应用“移植”到Windos平台的开发环境的一套软件。
Cygin官网https://.cygin./
MSYS和MSYS2
MSYS,全称Minimal GNU(POSIX)system on Windos,是一个小型的GNU环境,包括基本的bash,make等等,可以看做是Cygin的迷你版。
由于MSYS 常年不更新,于是 Alex 等人 在 Cygin的基础上创建了MSYS2。
MSYS2 包含了一些工具和库,为您提供易于使用的环境,用于构建、安装和运行本机 Windos 软件。
它由一个名为 mintty 的命令行终端、bash、git 和 subversion 等版本控制系统、tar 和 ak 等工具,甚至 autotools 等构建系统组成,所有这些都基于 Cygin 的修改版本。尽管其中一些核心部件基于 Cygin,但 MSYS2 的重点是为本地 Windos 软件提供构建环境,并且将使用 Cygin 的部件保持在最低限度。 MSYS2 为 GCC、ming-64、CPython、CMake、Meson、OpenSSL、FFmpeg、Rust、Ruby 等提供最新的本机构建支持。
MSYS2提供了一个Arch Linux 用户非常熟悉的,名称为 Pacman 的软件包管理系统。它带来了许多强大的功能,例如依赖项解析和简单的完整系统升级,以及直接和可复制的包构建。我们的软件包存储库包含 2000 多个可以立刻安装的预构建软件包。
MSYS2安装包中包含了Ming-64。
MSYS2官网https://.msys2./
MinGW
MinGW 的全称是Minimalist GNU on Windos 。它实际上是将Linux下的编译器 GCC 移植到了 Windos,并且包含了 Win32 API ,可以将源代码编译为可在 Windos 中运行的可执行程序。它还可以使用一些 Windos 不具备的,Linux平台下的开发工具。一句话来概括MinGW 就是 GCC 的 Windos 版本 。MinGW只能用于构建32位应用程序。
MinGW项目目前已经接近停止。
MinGW官网https://sourcefe./projects/ming/files/
Ming-64
MinGW基本上停止开发,且只能编译生成32位可执行程序。2007年为了支持64位应用程序开发和新的Windos API,从MinGW分叉而出。MinGW-64 支持编译 64位 和 32位 可执行程序。
下载地址https://sourcefe./projects/ming-64/files/
Ming-64官网https://.ming-64./
x86_64和x64表示AMD64位处理器架构,可以运行32位和64位应用程序,现在的PC处理器基本上都是这种架构。
i686也是32位指令系统。
in32和posix指的是操作系统API,in32指的是Windos API,Linux和Unix操作系统则使用posix。开发Windos程序使用in32更好,开发Linux程序使用posix更好。
SJLJ和SEH指的是异常处理机制
DWARF : DWARF-2 (DW2) EH,需要使用 DWARF-2(或 DWARF-3)调试信息。 DW-2 EH 会导致可执行文件轻微膨胀,因为大的调用堆栈拆解表必须包含在可执行文件中
setjmp/longjmp (SJLJ)。 基于 SJLJ 的 EH(异常处理) 比 DW2 EH 慢得多(在没有异常时甚至更加缓慢),对于没有使用g编译的代码或者没有用堆栈的代码,它也可以工作。
Structured Exception Handling (SEH)(结构化异常处理) Windos 使用自己的异常处理机制。
对于Windos平台,选择x86_64-in32-seh无疑更好一些
TDM-GCC
衍生自 MinGW 和 MinGW-64 的项目,分为 32 位 和 64 位两个版本,32 位版本的编译目标仅兼容 32 位应用程序,64位版本的编译目标兼容 32 位应用程序与 64 位应用程序,最新的官方二进制版本为 GCC 10.3.0。
官网https://jmeubank.github.io/tdm-g/
,如果你只想尝试一下g,那么建议选择Ming-64,如果你还想尝试一下Linux下的各种工具软件,那么可以尝试Cygin。
免费软件
- 泰安热水器厂家维修(泰安热水器常见故障及解
- 克来沃空调售后服务电话 ——售后维修中心电话
- 襄阳冰箱24小时服务热线-全国统一人工【7X24小时
- 乐清热水器故障维修(全国联保服务)各网点-24小时
- 温州空调售后维修服务中心-24小时服务热线
- 长沙嘉善燃气灶售后维修服务中心-(7X24小时)登
- 鄢陵市清远(HISENSE)壁挂炉全国服务电话-厂家维修
- 石家庄德州壁挂炉售后维修服务中心-全国统一人
- 克来沃空调售后维修服务电话号码-全国统一服务
- 新余空调不制冷不制热缺氟缺冷媒怎么办?空调
- 温州宿州壁挂炉售后维修服务中心
- 台山空调售后服务号码-24小时服务热线
- 阳江冰箱客户服务电话-(7X24小时)登记报修热线
- 铜川冰箱不制冷原因分析
- 用食用碱清洗油烟机的方法(用食用盐清洗厨房油
- 遵义热水器维修热线-全国统一客户服务中心