MinGW
MinGw即Minimalistic GNU for Windows,某种程度上可以看做是win版本下的GCC。它是一个建立在GCC和binutils 项目上的编译器系统。MinGW几乎支持所有的Win32API,所连接的程序,不需要任何第三方库就可以运行了。在某种程度上看,MinGW更像是VC的替代品。
相关名称:
- MinGW是最先出来的,但是当时只有32位系统,所以支持32位系统;
- Mingw-w64 既支持64位,也支持32位,也支持32位和64位的交叉编译;gcc官方支持Mingw-w64,所以更建议Mingw-w64.
- TDM-GCC: 32位的用的是Mingw,64位用的是MinGW64.
Cygwin
Cygwin 则是一个在Windows平台上运行的unix模拟环境,是cygnus solutions 公司开发的自由软件。Cygwin更像一个平台,模拟了Linux的接口,提供了运行在它上面的程序使用,提供了很多Linux环境下的GNU软件。
Cygwin其实并不是一个GCC。它是让Windows拥有Unix-like环境的软件,所以GCC自然也就会包含在里面。Cygwin和MinGW最大的区别在于,使用Cygwin可以在Windows下调用Unix-like的系统函数。比如进程函数等等。
综合对比
1. MinGW 是让Windows 用户可以用上GNU 工具,比如GCC。Cygwin 提供完整的类Unix 环境,Windows 用户不仅可以使用GNU 工具,理论上Linux 上的程序只要用Cygwin 重新编译,就可以在Windows 上运行。
2.如果程序只用到C/C++ 标准库,可以用MinGW 或Cygwin 编译。如果程序还用到了POSIX API,则只能用Cygwin 编译。
3.程序经MinGW 编译后可以直接在Windows 上面运行。程序经Cygwin 编译后运行,需要依赖安装时附带的cygwin1.dll。
使用对比
- Cygwin体量大,Mingw体量小
- Cygwin编译后的exe需要cygwin1.dll作为支持,而Mingw不需要就可以直接运行,因为有中间层所以Cygwin慢,Mingw快。
- Cygwin包含的内容更全面,能编译通过的linux源文件更多,Mingw能编译通过的更少。
- 在一些IDE中,比如Clion,使用Mingw有烦人的回显,而Cygwin没有。
从执行速度上,偶推荐在Windows下选择使用MinGW64,当然使用VS的用户不必选择GCC。