Cygwin 与 MinGW/MSYS/MSYS2,如何选择?甚至还有GNU utilities for Win32
- 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 。
贴一张运行截图:

2015-10-30 更新:
如果不愿意使用 Cygwin 或者 MinGW 这种 ”重型“ 的 port,又喜欢 unix 下的工具链,那么可以尝试一下下面几个原生移植工具集:
- GNU utilities for Win32
- CoreUtils for Windows 或者 完整的 package
- dd for windows
- Unix ports - WHICH, TEE & CUT
https://blog.zengrong.net/post/1557.html
Cygwin 与 MinGW/MSYS/MSYS2,如何选择?甚至还有GNU utilities for Win32的更多相关文章
- Cygwin、Msys、MinGW、Msys2的区别与联系(转)
网上有很多文章讲它们之间的区别与联系,初学者看的一头雾水,在知乎上看到这篇文章讲的很清楚,容易理解. 在讲区别联系之前,我们先看一下这几个东东的前世今生. Cygwin,原 Cygnus 出品(已 ...
- Cygwin, MinGW/MSYS, MinGW-W64/MSYS2
1. Cygwin http://www.cygwin.com/ Cygwin is a large collection of GNU and Open Source tools which pro ...
- 关于GCC Cygwin MinGW MSYS
[转载]关于Gcc/MinGW/Cygwin/Msys http://blog.sciencenet.cn/blog-778757-616920.html 一.GCC的历史 GCC是一个原本用于Uni ...
- MSYS是一个小型的GNU环境,包括基本的bash,make等等,与Cygwin大致相当(双击“D:\MinGW\msys\1.0\msys.bat”,启动MinGW终端)
1 简介 MinGW,是Minimalist GNUfor Windows的缩写.它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和 ...
- [cross compile]cygwin和mingw
转自:http://blog.csdn.net/embededvc/article/details/6829010 1. MinGW和CygWin/gcc概念 Unix下编译通过的C代码,在win32 ...
- Windows 下使用 mingw+msys 交叉编译 Android Unity Mono
对于没有升级到 Unity5.4的用户,发布安卓版本都会有对 C# 脚本进行加密的需求,我们项目在裸奔了很长时间后,决定开始做这件事. 网上查看了很多资料,我很希望直接在 windows 下编译而不去 ...
- windows - Cygwin和MinGW有什么区别?(MinGW从Cygwin 1.3.3版本中分离出来)
windows - Cygwin和MinGW有什么区别? 我想让我的C ++项目跨平台,我正在考虑使用Cygwin / MinGW. 但是他们之间有什么区别呢? 另一个问题是,如果没有Cygwin / ...
- 开源项目:windows下使用MinGW+msys编译ffmpeg
本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处. FFmpeg是在Linux平台下开发的,但 ...
- windows 下使用 MinGW + msys 编译 ffmpeg
本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处. FFmpeg是在Linux平台下开发的,但 ...
随机推荐
- Linux在应用层读写寄存器的方法。。。
参考链接:http://blog.csdn.net/liukang325/article/details/26601811 /dev/mem:物理内存的全镜像.可以用来访问物理内存.由于应用运行都在用 ...
- make 2>&1 | tee build.log
make 2>&1 | tee build.log 保存编译log,方便问题查找
- HML5
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- vector转数组
vector转数组 由于vector内部的数据是存放在连续的存储空间,vector转数组事实上只需要获取vector中第一个数据的地址和数据的长度即可.如果仅仅是传参,无需任何操作,直接传地址即可,如 ...
- RFID的基本组织构成
RFID技术由3大组件构成, 包括: 阅读器.天线.标签三大组件. 阅读器 为RFID系统最重要也是最复杂的一个组件.因其工作模式一般是主动向标签询问标识信息, 所以有时又被称为询问器(Interro ...
- nuxt按需引入 element-UI、自定义主题色(终极按需引入)
首先你要知道 nuxt.js怎么引入第三方插件 : 不多BB. 一.按需引入element-UI 第一步:安装 babel-plugin-component: npm install babel-pl ...
- CodeVs——T 3305 水果姐逛水果街Ⅱ
http://codevs.cn/problem/3305/ 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 De ...
- EXT gridPanel 添加图片
var workAreaGrid = new Ext.grid.GridPanel({ region: 'west', title: '工作面预警结果', store: wkSto, width: , ...
- JS学习笔记 - fgm练习 2-11- 改变图片路径 var img = new Image(); 图片预加载
<style> *{ margin: 0;padding: 0; list-style: none; } body{ background: black; } .outer{ margin ...
- GCJ 2009 Round 2 Problem A. Crazy Rows
https://code.google.com/codejam/contest/204113/dashboard 题目大意: 给你一个矩阵,让你转化为下三角矩阵,每次只能交换相邻的行,求最小的交换次数 ...