Cygwin 与 MinGW/MSYS/MSYS2,如何选择?

Cygwin与MinGW/MSYS,如何选择?

  • 2012-11-03更新:加入 MSYS 的内容。
  • 2013-10-15更新:修改表格格式,加入介绍链接。
  • 2014-12-17更新:加入 MSYS2 的内容。

什么是Cygwin和MinGW?请看这篇:Msys/MinGW与Cygwin/gcc

在无法完全转换到Linux系统的前提下,我一直在 Cygwin 下工作,使用全套的Linux移植工具,学习Bash编程。

但Cygwin由于工作在模拟模式下,速度较慢,相比而言, MinGW 就要快不少。

下面是我选择的对比:

特点 Cygwin MinGW/MSYS MSYS2
是否GNU
更多软件支持? 支持绝大多数的 GNU 软件 支持常用软件,git、Vim等软件需要独立支持(详细介绍见下方) 支持大多数 GNU 软件
更类Linux? Cygwin在Windows中就好像Wine在Linux中 实现了Bash等主要的Linux程序 原生64/32bit支持
GCC编译 内含MingGW32交叉编译功能,既支持依赖cygwin1.dll的程序编译,也支持独立的Windows程序编译;可以直接编译Linux下的应用程序 支持独立的Windows程序编译 支持独立的Windows程序编译
中文支持 直接支持中文显示和输入法 需要配置才能支持中文显示和输入,删除一个中文字符需要删除2次 支持中文显示和输入法,中文帮助系统和中文提示(部分软件)
运行速度

Git for Windows和msysGit是建立在MinGW/MSYS的基础之上的。但如果已经安装过MinGW/MSYS,希望在已有的MinGW/MSYS上获得Git的功能,则会比较麻烦,详见下方的2篇文章:

另外,在安装msysGit的时候,要注意cygwin的bin目录不能位于PATH环境变量中。否则msysGit会拒绝安装。

最终,我还是决定继续Cygwin。git、Vim和中文是主要原因。

2014-12-17 更新:

这段时间尝试了 MSYS2 ,发现它已经能满足我上面列出的所有需求。目前我已经删除了 Cygwin ,改用 MSYS2 。

下面是 MSYS2 的官方介绍:

MSYS2 is an updated, modern version of MSYS, both of which are Cygwin (POSIX compatibility layer) forks with the aim of better interoperability with native Windows software.

The name is a contraction of Minimal SYStem 2, and aims to provide support to facilitate using the bash shell, Autotools, revision control systems and the like for building native Windows applications using MinGW-w64 toolchains.

目前碰到的问题,是 Python pip 在 MSYS2 下无法运行。但我可以使用 Windows 版本的 Python 。

贴一张运行截图:

msys2-curl

2015-10-30 更新:

如果不愿意使用 Cygwin 或者 MinGW 这种 ”重型“ 的 port,又喜欢 unix 下的工具链,那么可以尝试一下下面几个原生移植工具集: