posix win32(POSIX、Cygwin、MSYS、MSYS2、MinGW、MinGW-w

操作系统 2023-07-23 16:25www.caominkang.comlinux操作系统

对于习惯了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。

Copyright © 2016-2025 www.caominkang.com 曹敏电脑维修网 版权所有 Power by