
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2019-01-05 标题【转】MinGW和cygwin的区别和联系分类操作系统 / linux 标签MinGW·cygwinMinGW和cygwin的区别和联系windows与Linux操作系统的不同什么是 MinGW什么是 cygwin两者的区别MinGW、MinGw-w64、TDM-GCC本文转至【 https://www.cnblogs.com/zoe-mine/p/7056369.html 】有删改windows与Linux操作系统的不同windows和Linux是目前来说最流行的两大操作系统在基本设计概念上进程、线程、寻址、内存管理等方面都是大同小异的但是二者之间的程序不兼容因为二者在系统功能上是不同的提供的系统API也是不同的。从最明显的几点来说可执行文件的格式Windows采用的是PE的格式要求以.exe为后缀名而Linux使用的是 elf 的格式操作系统提供的系统API是不同的如Windows使用CreateProcess()创建进程而Linux使用fork()。所以想要在Windows环境下使用Linux的编译工具也就是gcc/g我们需要一个中间的转换工具或者平台这也就是MinGW和cygwin存在的原因。什么是 MinGWMinGw全称Minimalistic GNU for Windows某种程度上可以看做是win版本下的GCC。Mingw有一个Msys的子项目可以提供一些模拟Linux的shell和基本的Linux工具Msys是一个辅助环境。MinGw 有专门的Win32 API的头文件来把代码中Linux方式的系统调用替换为对应的Windows下的调用方式某种程度上可以称之为将Linux调用翻译为Windows调用。什么是 cygwinCygwin 则是一个在Windows平台上运行的unix模拟环境是cygnus solutions 公司开发的自由软件。Cygwin更像一个平台模拟了Linux的接口提供了运行在它上面的程序使用提供了很多Linux环境下的GNU软件。Cygwin 通过Cygwin1.dll的文件实现操作系统API的转换模拟了Linux的调用接口给程序程序以Linux的方式调用系统API但这个API的目标库是Cygwin1.dllCygwin1.dll再调用Windows对用的方式实现再把结果返回给程序。两者的区别MinGW生成的程序究其本质调用的是Kernel.32导出的标准Windows系统API在windows下Mingw的编译性能会高一些编译速度也会快一些。Cygwin更像一个平台它相对完整地模拟了LInux提供了一个接近2M的Cygwin1.dll的文件作为目标库来模拟Linux系统的接口但是相对来说编译的速度就要慢一些。如果想要在Windows上开发可以运行在LInux上的程序应该选用Cygwin。总的来说cygwin大mingw小cygwin编译后的exe需要cygwin1.dll作为支持而mingw不需要就可以直接运行因为有中间层所以cygwin慢mingw快。cygwin包含的内容更全面能编译通过的linux源文件更多mingw的min是minimalist所以能编译通过的更少。但不是全部就是说别指望你可以把任何为linux写的源代码在cygwin或mingw编译通过并运行。MinGW、MinGw-w64、TDM-GCCMinGW是最先出来的但是当时只有32位系统所以支持32位系统Mingw-w64 既支持64位,也支持32位也支持32位和64位的交叉编译gcc官方支持Mingw-w64所以更建议Mingw-w64.TDM-GCC 32位的用的是Mingw64位用的是MinGW64.参考【 https://blog.csdn.net/whatday/article/details/87112479 】【 https://blog.csdn.net/u013171283/article/details/80898442 】【 https://www.cnblogs.com/findumars/p/8290405.html】