Cygwin 与 MinGWMSYSMSYS2,如何选择?
Cygwin 与 MinGW/MSYS/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篇文章:
- Installing Git under MinGW (+MSys)
- Using msysGit from MinGW and vice versa
另外,在安装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 。
贴一张运行截图:
2015-10-30 更新:
如果不愿意使用 Cygwin 或者 MinGW 这种 ”重型“ 的 port,又喜欢 unix 下的工具链,那么可以尝试一下下面几个原生移植工具集:
- GNU utilities for Win32
- CoreUtils for Windows 或者 完整的 package
- dd for windows
- Unix ports – WHICH, TEE & CUT
关联文章
- PuTTYcyg的替代者mintty
- PuTTYcyg的替代者FuTTY
- cygwin升级到1.7后,git gui和gitk报错
- 使用gcc -mno-cygwin参数编译失败的解决办法
- UNIX 高手的 20 个习惯
- cocosbuilder创建工程
- 做php的灯就灭,121128 还原 我是做PHP的,女嘉宾把灯全灭了 真相
- linux下开启、关闭、重启mysql服务命令
- mingw+msys windows下配置
- 音频信号的数字化及压缩编码
- anchor的用法
- 一篇不错的关于VSS的入门介绍
- Ext 2 概述
- 什么是Nofollow
- SAR成像系列:【11】干涉合成孔径雷达(干涉SAR,Interferometric SAR,InSAR)
- postgresql 命令行操作
- 全国计算机考试如何查准考证号
- itoa()和atoi()函数详解
- curl命令详解 (实例使用方法)
- shiro反序列化漏洞的原理和复现
- (十四)STM32——外部中断(EXTI)
- 基于STM32F429的语音识别交互系统