美文网首页
CygWin、MingW、MSYS之间的关系

CygWin、MingW、MSYS之间的关系

作者: 波波2 | 来源:发表于2021-03-28 11:05 被阅读0次

    前言

    在跨平台开发或移植中,经常会听说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之间的关系

          本文链接:https://www.haomeiwen.com/subject/ptkphltx.html