关于cygwin/msys/msys2/mingw/mingw64

时间:2022-09-06 01:52:20
最近想在windows平台建立一个gcc开发环境, 目前windows平台有多种gcc工具链可用:cygwin/msys/msys2/mingw/mingw64

这几天研究了一下这几个东西,把目前所了解的情况做个笔记,以防以后再花时间去研究.


cygwin

是最早出现的一套在windows平台模拟linux环境的软件,它几乎完整地模拟了linux的大部分API,

核心文件是cygwin1.dll,然后再基于此核心移植了linux平台的其它GNU工具.

工具比较全,体积较大,运行速度较慢,编译的程序依赖cygwin.dll.

所以说它应该可以理解为一个linux模拟器.

主页:http://www.cygwin.com/



mingw

则是专注于windows平台的gcc工具链,把gcc移植到windows平台,基于原生win32 api,而不依赖linux平台的api.

它不提供linux环境下的其它管理工具,是个原生的windows编译环境.

可以用它编译出原生的windows程序,而不像cygwin一样需要依赖cygwin.dll.

它的gcc工具命名是 i686-pc-mingw32-gcc

主页:http://www.mingw.org/

项目资源: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

主页:http://www.mingw-w64.org/

项目资源: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

主页是:http://www.msys2.org/

下载源: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远程仓库时输入用户名没有回显,很奇怪,很纠结.