这几天研究了一下这几个东西,把目前所了解的情况做个笔记,以防以后再花时间去研究.
cygwin
是最早出现的一套在windows平台模拟linux环境的软件,它几乎完整地模拟了linux的大部分API,
核心文件是cygwin1.dll,然后再基于此核心移植了linux平台的其它GNU工具.
工具比较全,体积较大,运行速度较慢,编译的程序依赖cygwin.dll.
所以说它应该可以理解为一个linux模拟器.
mingw
则是专注于windows平台的gcc工具链,把gcc移植到windows平台,基于原生win32 api,而不依赖linux平台的api.
它不提供linux环境下的其它管理工具,是个原生的windows编译环境.
可以用它编译出原生的windows程序,而不像cygwin一样需要依赖cygwin.dll.
它的gcc工具命名是 i686-pc-mingw32-gcc
项目资源:https://sourceforge.net/projects/mingw
mingw-w64
由于mingw只支持32位程序,所以又产生了mingw-w64,提供了可以在32位系统上编译出64位windows程序的gcc工具链?
它的gcc工具命名是i686-w64-mingw32-gcc还有x86_64-w64-mingw32-gcc
项目资源:https://sourceforge.net/projects/mingw-w64
msys
由mingw团队开发的,mingw和cygwin结合的产物,cygwin的精简版再加上mingw的编译器.
主要是用来配合mingw进行命令行开发一套比较完整的开发环境.
主页:http://www.mingw.org/wiki/MSYS
msys2
是另一个开源组织在MSYS的基础上重新开发的.与MSYS最大的区别是移植了Arch Linux的软件包管理系统Pacman
msys2也和cygwin差不多,是模拟linux平台的环境(posix api),但它的速度比cygwin要快不少.
目前提供了比较丰富的工具,包括git, python, perl, gcc等。
用它的gcc编译出来的程序,需要msys2的运行环境,核心dll是msys-2.0.dll
gcc工具命名是 i686-pc-msys-gcc
下载源:https://sourceforge.net/projects/msys2/
写在最后:
目前推荐使用的mingw-w64和msys2的组合.
mingw的工具链适合编译纯windows api的程序,而sys2则可以比较方便地移植GNU的开源项目.
目前git for windows从安装后的文件目录来看,也是基于msys2的,但它的git是由mingw32编译的.
由于我又想要使用mingw,又想使用msys2,又想使用git,如果分开安装,不仅占用硬盘空间,而且很麻烦,
所以我想在windows上使用MSYS2来统一开发环境,我安装了MSYS2,再安装了MSYS2提供的git,
但发现这个版本的git在以http的方式clone远程仓库时输入用户名没有回显,很奇怪,很纠结.