mingw和cygwin区别

minGW与cygwin

==========================

首先MingW和cygwin都可以用来跨平台开发。

MinGW是Minimalistic GNU for Windows的缩写,也就是Win版的 精简的GCC 。

MinGW 收集了一系列免费的Windows 使用的头文件和库文件;同时整合了GNU( http://www.gnu.org/ )的工具集,特别是GNU 程序开发工具,如经典gcc, g++, make等。

Microsoft的有一套unix的子系统的开发环境,不过只是一个posix子集,linux的许多函数不能用,当然fork没问题。

Cygwin则是 全面模拟 了Linux的接口,提供给运行在它上面的的程序使用,并提供了大量现成的软件,更像是一个平台。

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

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

===================================

首先,MingW和cygwin都不能让Linux下的程序直接运行在Windows上,必需通过源代码重新编译。

现代操作系统包括Windows和Linux的基本设计概念像进程线程地址空间虚拟内存这些都是大同小异的,之所以二者上的程序不能兼容,主要是它们对这些功能具体实现上的差异,

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

其次,操作系统的API也不一样,如Windows用CreateProcess()创建进程,而Linux使用fork()。

所以要移植程序必然要在这些地方进行改变,

MinGW的方案:

来把代码中Linux下的系统调用API直接 替换 修改成对应的Windows下的API。所以生成的执行文件已经 看不到linux的系统调用api 。

Cygwin方案:

Cygwin通过 cygwin1.dll 这个动态库 实现两个平台API的转换 。Cygwin生成的程序依然有fork()这样的Linux系统调用API, 只不过在cygwin1.dll实现到Windows功能的转换。

用Mingw编译的程序性能会高一点,而且也不用带着那个接近两兆的cygwin1.dll文件。

【综上所述】

1.修改编译器,让window下的编译器把诸如fork的调用翻译成等价的形式--这就是mingw的做法.

2.修改库,让window提供一个类似unix提供的库,他们对程序的接口如同unix一样,而这些库,当然是由win32的API实现的--这就是cygwin的做法.

时间: 2024-10-09 21:09:00

mingw和cygwin区别的相关文章

MinGW与Cygwin的一些杂谈

引用:http://www.cnblogs.com/fancybit/archive/2012/07/08/2581590.html 首先MingW和cygwin都可以用来跨平台开发.  MinGW是Minimalistic GNU for Windows的缩写,也就是Win版的GCC.  Cygwin则是全面模拟了Linux的接口,提供给运行在它上面的的程序使用,并提供了大量现成的软件,更像是一个平台.  相对的MingW也有一个叫MSys(Minimal SYStem)的子项目,主要是提供了

mingW与cygwin

转自:http://hi.baidu.com/ooxxer/item/d25dccc072846a50ac00ef7e# 首先MingW和cygwin都可以用来跨平台开发.  MinGW是Minimalistic GNU for Windows的缩写,也就是Win版的GCC.  Cygwin则是全面模拟了Linux的接口,提供给运行在它上面的的程序使用,并提供了大量现成的软件,更像是一个平台.  相对的MingW也有一个叫MSys(Minimal SYStem)的子项目,主要是提供了一个模拟Li

C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项

目录 0. 引言 1. 交叉编译 2. Cygwin简介 3. 静态库编译及使用 4. 动态库编译及使用 5. MinGW简介 6. CodeBlocks简介 0. 引言 UNIX是一个注册商标,是要满足一大堆条件并且支付可观费用才能够被授权使用的一个操作系统.linux是unix的克隆版本,是由其创始人Linus和诸多世界知名的黑客手工打造的一个操作系统.为什么linux和unix之间有很多软件可以很轻松的移植?因为linux也满足POSIX规范,所以在运行机制上跟unix相近.同时,POSI

MinGW and Cygwin – An Introduction and Differences

If you are using Linux and your are a big fan of shell and its other utilities like grep, ls, make and its compilers gcc and g++, and if you want these utils on Windows platform, then this articles is for you. Even if you are not a developer, but sti

Msys/MinGW与Cygwin/gcc

本文转自:http://www.lupaworld.com/273398/viewspace-122539.html 一. MinGW MinGW 官方网站为 http://www.mingw.org/ MinGW,即 Minimalist GNU For Windows(GCC compiler suite).它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC(GNU Compiler C)产生 Windows32 程序. MinGW: 一个可自由使用和自由

MinGW和MSYS区别和关系以及MinGW&MSYS在Win7中安装并编译x264

1 简介   MinGW,是Minimalist GNUfor Windows的缩写.它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库.MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时(C Runtime)库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95发行版

Cygwin、Msys、MinGW、Msys2的区别与联系(转)

声明:本文章转自知乎,如有侵犯,请告知删除. 作者:LiTuX链接:https://www.zhihu.com/question/22137175/answer/90908473来源:知乎 网上有很多文章讲它们之间的区别与联系,初学者看的一头雾水,在知乎上看到这篇文章讲的很清楚,容易理解. 在讲区别联系之前,我们先看一下这几个东东的前世今生. Cygwin,原 Cygnus 出品(已被红帽收购),目前是 RedHat 名下的项目.项目的目的是提供运行于 Windows 平台的类 Unix 环境(

cygwin和mingw的区别

之前由于做一些JNI的开发,安装了MinGW,最近有个项目需要用到cygwin,于是就有个疑问,这两个东西有什么区别?在网上看了些资料,在这里复制粘贴一下,以备后查. Unix下编译通过的C代码,在win32下编译是不能通过的 ,当然Unix 和win32的API都是符合标准C,也就是说,大多数函数调用在unix和win32下是相同的.但是,unix有自己一些独特的API(如fork,spawn,signals,select,sockets等),如果代码中使用了这些API,在win32下当然找不

Cygwin与minGW

这几天关注了一下它们, 其实我是不想安装一下vs来编写一些小东西. 本来想写个小exe,于是跑到vs的bin下面把cl与link搞出来,却发现cl还要配置什么的,也不太清楚直接就二个exe与部分dll能否使用.折腾二下, link可以使用,cl却不能使用.也没见谁这么弄过,于是放弃了. 再找window编译win32 c时,发现有gcc,找到minGW,与Cygwin,折腾比较了好大一会,才发现. mingGW最大区别就是把那些bin编译成cmd下可以独立运行的, 而Cygwin,基本上是cmd