https://www.jianshu.com/p/09198f6e0a3c

前言

在跨平台开发或移植中,经常会听说Cygwin、MingW、MSYS,他们之间是什么关系?对于将要完成的任务,应该选择哪一个环境?

异同对比

相同点: 都可以使用一些gnu相关的工具,使得原来在linux下的工具可以被Windows平台用户使用。
不同点:

  1. 目标不同。Cygwin主要是完成跨平台编译,使得Linux下开发的应用程序,可以直接在Windows平台进行编译。主要是通过模拟了Linux下的API接口来实现。MingW最初的初衷是利用Linux系统下的编译工具链来编写Windows平台项目。关键词:Cygwin编译的程序是Linux系统下的源码程序,MingW编译的是Windows平台下源码程序。由于MingW只是一组编译工具链,对于习惯Linux命令操作的用户来说,有很大不便,所以产生了msys,它主要就是模拟一个Linux交互shell,利用工具链编译Windows平台源码程序。
  2. 基础原理不同。由于Cygwin需要完整编译Linux下应用程序,所以需要支持Linux下相应的API,所以Cygwin构建了一个模拟层,用于将Linux的API模拟转换为Windows平台的API。MingW、MSYS中的所有应用程序都是原生的Windows程序,没有中间模拟层。这个具体应该如何理解?举一个简单例子:在Cygwin环境下的Python中,执行os.path.exists('/usr/bin'),返回值为True,而在MingW或者MSYS环境下的Python中执行对应语句,返回值为False。

如何选择?

Cygwin:适合将Linux下程序(前期未做跨平台考虑)移植到Windows平台。但效率较低。
MingW、MSYS:适合进行跨平台开发,提供Windows、Linux平台统一的编译、调试体验。

[转帖]CygWin、MingW、MSYS之间的关系的更多相关文章

  1. 关于GCC Cygwin MinGW MSYS

    [转载]关于Gcc/MinGW/Cygwin/Msys http://blog.sciencenet.cn/blog-778757-616920.html 一.GCC的历史 GCC是一个原本用于Uni ...

  2. Cygwin, MinGW/MSYS, MinGW-W64/MSYS2

    1. Cygwin http://www.cygwin.com/ Cygwin is a large collection of GNU and Open Source tools which pro ...

  3. Cygwin 与 MinGW/MSYS/MSYS2,如何选择?甚至还有GNU utilities for Win32

    Cygwin与MinGW/MSYS,如何选择? 2012-11-03更新:加入 MSYS 的内容. 2013-10-15更新:修改表格格式,加入介绍链接. 2014-12-17更新:加入 MSYS2 ...

  4. Windows 下使用 mingw+msys 交叉编译 Android Unity Mono

    对于没有升级到 Unity5.4的用户,发布安卓版本都会有对 C# 脚本进行加密的需求,我们项目在裸奔了很长时间后,决定开始做这件事. 网上查看了很多资料,我很希望直接在 windows 下编译而不去 ...

  5. MSYS是一个小型的GNU环境,包括基本的bash,make等等,与Cygwin大致相当(双击“D:\MinGW\msys\1.0\msys.bat”,启动MinGW终端)

    1 简介   MinGW,是Minimalist GNUfor Windows的缩写.它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和 ...

  6. [工具] slf4j-api、slf4j-log4j12以及log4j之间的关系

    几乎在每个jar包里都可以看到log4j的身影,在多个子工程构成项目中,slf4j相关的冲突时不时就跳出来让你不爽,那么slf4j-api.slf4j-log4j12还有log4j是什么关系?     ...

  7. .NET Core与.NET Framework、Mono之间的关系

    随着微软的.NET开源的推进,现在在.NET的实现上有了三个.NET Framework,Mono和.NET Core.经常被问起Mono的稳定性怎么样,后续Mono的前景如何,要回答这个问题就需要搞 ...

  8. .NET Core 和 .NET Framework 之间的关系

    引用一段描述:Understanding the relationship between .NET Core and the .NET Framework. .NET Core and the .N ...

  9. 实体之间的关系【Entity Relationships】(EF基础系列篇9)

    Here, you will learn how entity framework manages the relationships between entities. Entity framewo ...

  10. php CGI、Fastcgi、PHP-FPM的详细介绍与之间的关系

    以下PHP CGI.Fastcgi.PHP-FPM的一些信息归纳和汇总----->详细介绍与之间的关系 一:CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的 web ...

随机推荐

  1. 详解数据库SQL中的三个语句:DROP、TRUNCATE 、DELETE

    本文分享自华为云社区<GaussDB数据库SQL系列-DROP & TRUNCATE & DELETE>,作者:Gauss松鼠会小助手2 . 一.前言 在数据库中,SQL作 ...

  2. 华为云FusionInsight MRS:千余节点滚动升级业务无中断

    摘要:滚动升级作为大集群数据底座的必备能力,能够完美解决了传统大数据平台操作繁琐.业务停机.升级成本高等问题,实现一个架构的持续演进,业务无中断. 华为开发者大会2021(Cloud)大会期间,由华为 ...

  3. 对话 BitSail Contributor | 刘啸:参与开源,提升自我技术力

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 2022 年 10 月,字节跳动 BitSail 数据引擎正式开源.同期,社区推出 Contributor 激励计 ...

  4. 让 Java 打包缩小一大半,Solon v1.9.3 发布

    相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 - 10 倍. (更快) qps 高 2- 3 倍. (更高) 运行时内存节省 1/3 ~ 1/2. (更少) 打包 ...

  5. Jenkins Pipeline 流水线 - Parameters 参数化构建

    可以通过参数的方式,指定构建的版本 有两种方式 界面添加 Pipeline Script 脚本配置 (需要Build 一次,然后生效,不知道有没有其它办法) General 界面添加 Pipeline ...

  6. MySQL 添加用户,分配权限

    1. 添加用户 CREATE USER `vipsoft`@`%` IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER; 2. 权限配置 GRANT 权限1,权限 ...

  7. 注册中心/配置管理 —— SpringCloud Alibaba Nacos

    Nacos 简介 Nacos 是一个易于使用的动态服务发现.配置和服务管理平台,用于构建云原生的应用程序 Nacos 的关键特性包括以下几项: 服务发现和服务健康监测:服务提供者使用原生 SDK.Op ...

  8. termius macos 破解版,激活版下载,永久激活,亲测可用

    termius 是一款非常值得推荐的 SSH/SFTP 跨平台终端工具,其十分亮眼的功能是可以上传文件夹,这是其他几款终端工具都不具备的,比如说 macOS 自带的终端.号称 21 世纪最强终端的 w ...

  9. Codeforce:723A. The New Year: Meeting Friends (水题)

    题意:有三个好朋友的家都住在x轴的不同坐标,问新年的时候三个朋友之间问候走的最短距离 max{(a,b,c)} - min{(a,b,c)} 即可 编译器由 VS2017 切换到VScode使用,纪念 ...

  10. 2016年第七届 蓝桥杯A组 C/C++决赛题解

    蓝桥杯历年国赛真题汇总:Here 1.随意组合 小明被绑架到X星球的巫师W那里. 其时,W正在玩弄两组数据 (2 3 5 8) 和 (1 4 6 7) 他命令小明从一组数据中分别取数与另一组中的数配对 ...