简明阐述MinGW,MSYS,MSYS2

几年前的一个项目连同环境,不小心被我从硬盘上不可恢复的删掉了。

为了挽救,没头苍蝇似的在网上闯荡了几天,发现自己以前对MinGW的理解有着很大的误区。

本文不是攻略,只是希望以更简洁、清晰的描述,来帮助大家理解MinGW,防止重蹈我的覆辙。

一, MinGW是什么

MinGW,即Minimalist GNU for Windows,是一个原生的GCC(GNU Compiler Collection)的Windows接口集,具有用于建立原生Windows程序的可自由发布的头文件导入库。允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。其功能是允许控制台模式的程序使用微软的标准C运行时(C Runtime)库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95发行版以上的 Windows OS 有效。

已停止更新,内置的GCC停留在4.8.1版本

通俗点,抓重点,就是:跨Linux和Windows平台的,编译Windows程序的,包含头文件和端口库的工具链。

二,关联项目

Cygwin:         MinGW实际上是Cygwin的衍生品。但Cygwin更多是一个模拟的Unix环境,偏重于Unix软件移植到Windows。

Msys:             MinGW开发者从早期Cygwin分支的,配合MinGW工具链的,一个小型Linux模拟环境。扩展能力弱。

MinGW-W64:MinGW刚建立时,只能编译32位Windows程序。由于对提供64位支持的分歧,形成了不同的分叉,出现了可以支持32位和64位(区分版本)的MinGW-W64。它支持更多的 API,甚至支持 32 位 host 编译 64 位应用以及反过来的“交叉”编译。

                要注意的是,W64已经变成厂商名,而不是代表64位支持,如GCC源码的配置的三元组目标平台表示:

  1.                  -i386-pc-mingw32:- 32位x86指令集架构 - pc厂商 - mingw32系统 (MinGW系统时用)
    1.                  -i686-w64-mingw32:- 32位x86指令集架构 - W64 厂商 - mingw32系统(MinGW-W64系统时用)

Msys2:          由于MinGW+Msys总不更新,于是 Alex 等人建立了新一代的Msys项目,从较新Cygwin分支,但是更偏重于建立不依赖于WinAPI的原生Windows程序。有更优秀的包管理器 pacman,有活跃的开发者跟用户组,有大量预编译的软件包(虽然肯定没有Cygwin多)。

评论:Msys2为更新而来,不好的也是更新。旧的项目要是删了再想找回来,难于登天。它的服务器把旧包都删掉了-_-

下面的项目更多的是MinGW/W64工具集的不同发放形式:

  •                 TDM-GCC
    •                 MinGW Builds
      •                 MinGW Distro
    • -- 后面会有一些单独的说明,以及常见的问题。

你可能感兴趣的:(C语言,Msys2,gnu,windows,unix)