MinGW和Cgywin的区别

       起初,GCC是用于Unix,Unix-like系统的编译器。不过,现在Windows下也出现了GCC的稳定移植版。如今,在Windows下比较流行的GCC移植版主要有三个。他们是 MinGW,Cygwin和Djgpp。虽然,Djgpp是应用于DOS系统的,考虑到windows对DOS的兼容,所以也将Djgpp纳入其中了。那它们究竟有什么特点和区别呢?


  一 在Windows下比较流行的GCC移植版主要有三个。


  MinGW 的主要方向是让GCC的Windows移植版能使用Win32API来编程。

  Cygwin 的目标是能让Unix下的程序代码在Windows下直接被编译。

  Djgpp 则是想让DOS下也能用上GCC。


  二 介绍

  MinGW

  Minimalistic GNU for Windows。

  她是一个建立在GCC和binutils 项目上的编译器系统。和其他GCC的移植版相比,她可以说是最接近Win32的一个了。

  因为,MinGW几乎支持所有的Win32API,这也是MinGW的特色之一。

  她所连接的程序,不需要任何第三方库就可以运行了,允许人们在没有第三方动态链接库的情况下使用 GCC(GNU Compiler C)产生 Windows32 程序。

  在某种程度上看,MinGW更像是VC的替代品。

  实际上 MinGW 并不仅是一个 C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC (GNU 编译器集合) 以外,MinGW 还包含有一些其他的 GNU 程序开发工具


  Cygwin

  其实并不是一个GCC。她是让Windows拥有Unix环境的软件, 可以直接编译unix下程序。

  所以,GCC自然也就会包含在里面。

  不过,对于开发者,Cygwin是一个开发环境。而对于用户来说Cygwin是一个运行环境。

  Cygwin唯一和MinGW最大的区别在于,使用Cygwin可以在Windows下调用Unix的系统函数。

  比如进程函数,等等。所以,虽然说,Cygwin是运行在Windows下的,但是她还是使用的是Unix系统的函数和思想。


  MSYS

  Unix-like command line utilities

  包括基本的bash, make, gawk and grep 等等。通常也可以认为是小型的UNIX on Windows。提供在windows上模拟Unix环境来使用MinGW。

  中国发行版,用UNIX开发环境开发Windows程序。

  MSYS在windows下模拟了一个类unix的终端,它只提供了MinGW的用户载入环境,在MSYS模拟的unix环境下使用MinGW,就像在Unix使用gcc一样。


  三 cygwin和MinGW区别

  cygwin和MinGW都是gcc在windows下的编译环境,但是它们有什么区别,在实际工作中如何选择这两种编译器。

  cygwin下的gcc和linux下的gcc完全使用的是相同的Toolsets。所以完全可以和linux一起同步更新gcc版本,而不用担心问题,并且在cygwin做的东西(不用win32的)可以无缝的用在linux下,没有任何问题(这一点值得商榷)。是在windows下开发linux程序的一个很好的选择。

  但是在cygwin/gcc下编译出来的程序,在windows执行必须依赖cygwin1.dll,并且速度有些慢,如果不想依赖这个东西的化,必须在gcc的编译选项中加入-mno-cygwin。加入这个选项其实gcc编译器就会自动的选择在安装cygwin/gcc时安上的mingw,这个mingw就是gcc的一个交叉编译。

  对于mingw作为gcc在windows上的一个实现,由于不像cygwin的gcc在一个模拟linux上运行,同时相当一部分linux的工具不能够使用,不过现在已经有Msys这个模拟unix的shell,可以解决很多的问题。


  四 总结

       MinGW是windows版本的gcc集合,不需要依赖中间层。 MSYS是小型的linux的环境的模拟,可以与MinGW结合来模拟linux环境下使用MinGW的gcc。 Cygwin是功能强大的linux环境,由于有cygwin1.dll实现了底层的windows api到linux api的转化。所以在Cygwin里开发就相当于在linux上开发,对于开发人员来说就相当于调用linux类型的api,所以这样开发的程序也可以直接移植到linux上。但是如果这样的程序要在windows上执行的话,运行时必须要cygwin1.dll支持。 根据以上的分析,如果在windows开发linux跨平台的程序,linux模拟器Cygwin以及所包含的gcc是很好的选择,但是开发的程序必须依赖一个cygwin1.dll。如果你只是想在windows下使用gcc编译器也不想依赖其他的dll,mingw是很好的一个选择。

  通过对 MinGW,Cygwin和Djgpp特点与不同之处介绍,相信很多对这方面有需求的用户也有一定的了解,在使用gcc编译器能够得到更大的帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值