MinGw 和 cygwin 的区别和联系
原创 by zoe.zhang
..........................................................
1. windows与Linux操作系统的不同
windows和Linux是目前来说最流行的两大操作系统,在基本设计概念上,进程、线程、寻址、内存管理等方面都是大同小异的,但是二者之间的程序不兼容,因为二者在系统功能上是不同的,提供的系统API也是不同的。
从最明显的几点来说:
- 可执行文件的格式,Windows采用的是PE的格式,要求以.exe为后缀名,而Linux使用的是 elf 的格式;
- 操作系统提供的系统API是不同的,如Windows使用CreateProcess()创建进程,而Linux使用fork()。
所以想要在Windows环境下使用Linux的编译工具,也就是gcc/g++,我们需要一个中间的转换工具或者平台,这也就是MinGW和cygwin存在的原因。
2. 什么是 MinGW
- MinGw全称 Minimalistic GNU for Windows,某种程度上可以看做是win版本下的GCC。Mingw有一个Msys的子项目,可以提供一些模拟Linux的shell和基本的Linux工具,Msys是一个辅助环境。
- MinGw 有专门的Win32 API的头文件,来把代码中Linux方式的系统调用替换为对应的Windows下的调用方式,某种程度上可以称之为将Linux调用 翻译为 Windows调用。
3. 什么是 cygwin
- Cygwin 则是一个在Windows平台上运行的unix模拟环境,是cygnus solutions 公司开发的自由软件。Cygwin更像一个平台,模拟了Linux的接口,提供了运行在它上面的程序使用,提供了很多Linux环境下的GNU软件。
- Cygwin 通过Cygwin1.dll的文件实现操作系统API的转换,模拟了Linux的调用接口给程序,程序以Linux的方式调用系统API,但这个API的目标库是Cygwin1.dll,Cygwin1.dll再调用Windows对用的方式实现,再把结果返回给程序。
4. 两者的区别
- 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编译通过并运行。
5. MinGW、MinGw-w64、TDM-GCC
- MinGW是最先出来的,但是当时只有32位系统,所以支持32位系统;
- Mingw-w64 既支持64位,也支持32位,也支持32位和64位的交叉编译;gcc官方支持Mingw-w64,所以更建议Mingw-w64.
- TDM-GCC: 32位的用的是Mingw,64位用的是MinGW64.
- 此外还有一个IDE,CodeBlock,使用 起来相对简单,具有较强的跨平台性,比较适合不习惯使用命令行的新手。
6. 总结
事实上,cygwin/gcc和Mingw都是为了gcc可以在windows下使用的编译环境,可以方便进行一些类Linux环境下的编程。但是两种平台不管是哪一种,Linux程序都不能直接运行在Windows下的,需要对程序进行重新编译,同时建议重要的源码还是应该在真正的Linux环境下进行编译。
基于执行速度还有大小的原因,我倾向于在Windows下选择使用MinGW64.
附;Mingw-w64的环境搭建
- 下载安装包,并安装,注意安装时的一些setting 参数。
- 配置环境变量:环境变量输入安装的地址 ..\Mingw64\bin。
- 验证配置是否成功:打开cmd命令行,输入gcc -v。
MinGw 和 cygwin 的区别和联系相关推荐
- MinGw 和 cygwin 的区别和联系 (跨平台 windows运行linux程序)
1. windows与Linux操作系统的不同 windows和Linux是目前来说最流行的两大操作系统,在基本设计概念上,进程.线程.寻址.内存管理等方面都是大同小异的,但是二者之间的程序不兼容,因 ...
- Cygwin、Msys、MinGW、Msys2的区别与联系
网上有很多文章讲它们之间的区别与联系,初学者看的一头雾水,在知乎上看到这篇文章讲的很清楚,容易理解. 在讲区别联系之前,我们先看一下这几个东东的前世今生. Cygwin,原 Cygnus 出品(已被红 ...
- windows下的linux开发环境Mingw与Cygwin
minGW给那些习惯于在Linux上开发的人员,在windows上提供了一套类似的工具集. cygwin主要是对于再Linux的程序,无需改动代码即可移植到windows上. gnuwin32主要是对 ...
- mingW与cygwin 异同
首先MingW和cygwin都可以用来跨平台开发. MinGW是Minimalistic GNU for Windows的缩写,也就是Win版的GCC. Cygwin则是全面模拟了Linux的 ...
- mingW与cygwin
首先MingW和cygwin都可以用来跨平台开发. MinGW是Minimalistic GNU for Windows的缩写,也就是Win版的GCC. Cygwin则是全面模拟了Linux的 ...
- C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项
0. 引言 UNIX是一个注册商标,是要满足一大堆条件并且支付可观费用才能够被授权使用的一个操作系统.linux是unix的克隆版本,是由其创始人Linus和诸多世界知名的黑客手工打造的一个操作系统. ...
- 码农的自我修养 - 关于MinGW和Cygwin
Windows下使用GCC套件,并且模拟Unix/Linux的操作环境,一般使用的是MinGW和Cygwin. 让我们来一起认识一下. MinGW Minimalist GNU for Windows ...
- 基于window+Clion的CMake、MinGW与Cygwin配置指南
1. 背景介绍 Clion是捷克公司JetBrains出品的JB全家桶之中主要面向C.C++的集成开发环境.以前主要是基于Linux做软件无线电的开发.最近需要经常上网写文档,Linux实在不方便,想 ...
- mingw ,cygwin,msys,mingw-w64,msys2区别一句话总结。
最近用notepad++组建简单的windows下编译器环境,点击打开链接 发现了windows下好多题目中的名词.总结下他们的区别吧. mingw,主要是用linux的gnu工具,如gcc,gdb开 ...
最新文章
- 资管机构年中规模排名出炉:中信资管规模超万亿
- Ocelot简易教程(一)之Ocelot是什么
- 将matlab的.m文件打包为独立可执行程序.exe —— 基于Matlab R2015b
- Ubuntu18.04中Anaconda启动 Navigator
- 人脸情绪识别系统第一次迭代总结
- OpenCV学习笔记(五):线性滤波-方框、均值、高斯:boxFilter(),blur(),GaussianBlur()
- 关于SOA您该知道却不愿知道的十件事
- element ui实现动态显示textarea剩余字数
- packages are looking for funding
- vmware workstation 14 密钥
- 安装duetdisplay遇到的问题
- 复合型网络拓扑结构图_网络拓扑结构大全和图片(星型、总线型、环型、树型、分布式、网状拓扑结构)...
- [iOS]让你的应用支持新iPad的Retina显示屏
- 差分隐私的定义、直观理解与基本性质
- kali 普通用户没有声音
- nest-mysql:RBAC权限管理
- 盖茨开始闭关修炼 冥思微软之大未来(引用)
- 宝锋UV-5R说明书下载
- 如何清理占用计算机内存,电脑内存不足怎么清理
- USB中CDC-ECM的了解和配置
热门文章
- C Primer Plus第三章课后练习答案
- 构建一个Gods Eye Android应用程序:第1部分 – 收集已安装的Android应用程序
- 如何在不使用手机的前提下恢复/解密/还原加密后的.enc格式华为手机助手备份文件?
- 删除W ndows桌面上某个应用,2014浙大远程Wndows知识题.docx
- pmbook 知识领域 第六版_PMBOK第六版10大知识领域ITTO思维导图-干货!
- SLAM实操入门(五):无里程计仅使用激光雷达建图(GMapping算法)
- 关闭windows 7 home basic版 internet 连接状态测试
- 如何在word和wps中添加分割线
- prerender ajax,Vue Prerender.io 预渲染seo优化
- dos怎么取消网络计算机,dos命令net share图文教程,创建删除显示网络计算机电脑共享资源...