`

MinGW与Cygwin

 
阅读更多

 

MingW和cygwin的区别

-------------------------------------------------------------

首先MingW和cygwin都可以用来跨平台开发。 
MinGW是Minimalistic GNU for Windows的缩写,也就是Win版的GCC。  
Cygwin则是全面模拟了Linux的接口,提供给运行在它上面的的程序使用,并提供了大量现成的软件,更像是一个平台。  


相对的MingW也有一个叫MSys(Minimal SYStem)的子项目,主要是提供了一个模拟Linux的Shell和一些基本的Linux工具。 因为编译一个大型程序,光靠一个GCC是不够的,还需要有Autoconf等工具来配置项目,所以一般在Windows下编译ffmpeg等Linux下 的大型项目都是通过Msys来完成的,当然Msys只是一个辅助环境,根本的工作还是MingW来做的。 

用MingW和cygwin编译出来的程序的区别

-------------------------------------------------------------
首先MingW和cygwin都不能让Linux下的程序直接运行在Windows上,必需通过源代码重新编译。  
现代操作系统包括Windows和Linux的基本设计概念像进程线程地址空间虚拟内存这些都是大同小异的,之所以二者上的程序不能兼容,主要是它们对这些 功能具体实现上的差异。

首先是可执行文件的格式,Window使用PE的格式,并且要求以.EXE为后缀名。Linux则使用Elf。

其次操作系统的 API也不一样,如Windows用CreateProcess()创建进程,而Linux使用fork()。  
所以要移植程序必然要在这些地方进行改变,MingW有专门的W32api头文件,来把代码中Linux方式的系统调用替换为对应的Windows方式。而Cygwin则通过 cygwin1.dll这个文件来实现这种API的转换,并模拟一个Linux系统调用接口给程序,程序依然以Linux的方式调用系统API,只不过这 个API在cygwin1.dll上,cygwin1.dll再调用Windows对应的实现,来把结果返回给程序。  
可以用查看他们编译好的程序的导入表来验证这点。  
二者生成的程序都是能在Windows上运行的EXE文件,显然都是PE格式,用一个PE格式查看工具检查一下就能发现,Cygwin生成的程序依然有 fork()这样的Linux系统调用,但目标库是cygwin1。而MingW生成的程序,则全部使用从KERNEL32导出的标准Windows系统 API。  
这样看来用Mingw编译的程序性能会高一点,而且也不用带着那个接近两兆的cygwin1.dll文件。  
但Cygwin对Linux的模拟比较完整,甚至有一个Cygwin X的项目,可以直接用Cygwin跑X。  
另外Cygwin可以设置-mno-cygwin的flag,来使用Mingw编译。  
而与Cygwin更有可比性的MSys上的工具也是通过Cygwin这种模拟的方式来提供的。  

区别总结:

1.修改编译器,让window下的编译器把诸如fork的调用翻译成等价的形式--这就是mingw的做法. 
2.修改库,让window提供一个类似unix提供的库,他们对程序的接口如同unix一样,而这些库,当然是由win32的API实现的--这就是cygwin的做法.

 

 

 

如何选择MingW和cygwin

-------------------------------------------------------------

如果在windows开发linux程序,cygwin是很好的选择。如果你开发的程序不介意有一个cygwin1.dll的话,也是可以选择cygwin的。

如果你是想开发windows下的程序,还要必须用gcc的话,mingw是很好的一个选择。

但是在windows下有太多的编译器了,bc,vc,intel c.....。

分享到:
评论

相关推荐

    window下linux环境模拟(MinGW,Cygwin).doc

    然后,需要安装 MinGW 并将其与 Eclipse 整合。这样,就可以使用 Eclipse 来开发 C++ 程序了。 MinGW 和 Cygwin 都是模拟 Linux 环境的方式,但它们之间有着很大的区别。MinGW 使用 Windows C 的运行库,避免了 GPL...

    MinGW的使用指南.pdf

    **MinGW与Cygwin的区别:** 1. Cygwin模拟了一个完整的Linux环境,而MinGW仅提供编译工具链。 2. Cygwin的程序依赖于Cygwin DLL,而MinGW编译的程序是纯Win32二进制文件,不需要额外的运行时库。 **注意事项:** 1....

    Cygwin+MinGW环境的安装并编译vlc

    ### Cygwin+MinGW环境下vlc-1.1.11的安装与编译 #### 一、Cygwin环境的安装与配置 ##### 1. Cygwin的安装 - **版本**: 使用Cygwin的新版本(例如20081208版),通过本地安装的方式进行安装。推荐选择“完全安装”...

    xgboost 已编译 (64位windows下 用mingw64 在 cygwin环境下编译)

    ** Mingw64与Cygwin** 在Windows环境下编译开源项目时,我们经常需要使用交叉编译工具。Mingw64(Minimalist GNU for Windows)是为64位Windows系统提供的一套GNU工具链,它允许开发者在Windows下使用GCC(GNU ...

    Dev-C++ Win32的全功能集成开发环境(IDE)。它使用GCC,Mingw或Cygwin作为编译器和库集。

    综上所述,Dev-C++是一个强大而易用的C/C++ IDE,尤其适合Windows平台下的开发工作,其与GCC、MinGW或Cygwin的结合,为开发者提供了高效且灵活的编程环境。无论是初学者还是经验丰富的开发者,都能从中受益。

    第01章附录:MinGW编译器的安装和配置.pdf

    ##### MinGW与Cygwin的区别 1. **MinGW**: - **目标用户**:专注于服务Windows用户,使得开发者能够直接使用GCC编译环境。 - **特点**:相比Cygwin,MinGW体积更小、使用更便捷。 - **适用范围**:适合仅需在...

    没有找到mingwm10.dll的解决办法和mingwm10.dll的作用.

    同时,理解MinGW与Cygwin之间的差异有助于开发者根据项目需求做出合适的选择,特别是在涉及跨平台移植和代码开放性问题时。通过深入理解这些技术细节,开发者能够更好地利用MinGW提供的优势,优化其应用程序的性能和...

    cygwin mingw编译的fltk2 library

    标题中的“cygwin mingw编译的fltk2 library”指的是使用Cygwin和MinGW环境编译的FLTK(Fast Light Toolkit)2版本的库。FLTK是一个开源的跨平台GUI工具包,适用于C++编程,它提供了一套简单易用的API来创建图形用户...

    完整的Mingw开发环境

    大家使用gcc在windows下开发软件,有两个途径,一、Cygwin,二、Mingw32 Cygwin可以使用autoconf,automake,libtool,libiconv and gettext(I18N/L10N) 进行完整的开发, 但由于Cygwin 封装了一层底层库,所以运行速度...

    完整的Mingw开发环境5

    大家使用gcc在windows下开发软件,有两个途径,一、Cygwin,二、Mingw32 Cygwin可以使用autoconf,automake,libtool,libiconv and gettext(I18N/L10N) 进行完整的开发, 但由于Cygwin 封装了一层底层库,所以运行速度...

    完整的Mingw开发环境6

    大家使用gcc在windows下开发软件,有两个途径,一、Cygwin,二、Mingw32 Cygwin可以使用autoconf,automake,libtool,libiconv and gettext(I18N/L10N) 进行完整的开发, 但由于Cygwin 封装了一层底层库,所以运行速度...

    cdrtools mingw32

    cdrtools mingw32 cygwin patch cjk

    cygwin-cegcc-mingw32ce-0.51.0-1.part2.rar

    cygwin-cegcc-mingw32ce-0.51.0-1.part2.rar 本人比较懒,就不给向我要的同志们单独发了,想要自己下~~~

    cegcc_mingw32ce_cygwin1.7

    在Linux下编译wince程序的工具,找了好久才发现。对此有需求的可以使用。

    MinGW,GCC编译器

    目前适用于 Windows 平台、受欢迎的 GCC 移植版主要有 2 种,分别为 MinGW 和 Cygwin。其中,MinGW 侧重于服务 Windows 用户可以使用 GCC 编译环境,直接生成可运行 Windows 平台上的可执行程序,相比后者体积更小,...

    完整的Mingw开发环境4

    大家使用gcc在windows下开发软件,有两个途径,一、Cygwin,二、Mingw32 Cygwin可以使用autoconf,automake,libtool,libiconv and gettext(I18N/L10N) 进行完整的开发, 但由于Cygwin 封装了一层底层库,所以运行速度...

    完整的Mingw开发环境3

    大家使用gcc在windows下开发软件,有两个途径,一、Cygwin,二、Mingw32 Cygwin可以使用autoconf,automake,libtool,libiconv and gettext(I18N/L10N) 进行完整的开发, 但由于Cygwin 封装了一层底层库,所以运行速度...

    MinGW 压缩包 免安装解压直接用

    1. **下载与解压**:首先,从官方或可信的源下载MinGW压缩包,如`MinGW-master.zip`,然后将其解压到一个合适的文件夹,如`C:\MinGW`。 2. **配置环境变量**:为了能在命令行中直接使用MinGW,需要将`bin`目录添加到...

    cygwin 包含安装插件

    在这里,你可以搜索与插件相关的软件包,比如开发工具、库或者其他特定功能的工具。 4. **安装插件**:找到并勾选你想要安装的插件,安装程序会自动处理依赖关系,确保所有必要的组件都得到安装。 5. **确认并安装...

Global site tag (gtag.js) - Google Analytics