zoukankan      html  css  js  c++  java
  • cygwin和mingw的区别

    之前由于做一些JNI的开发,安装了MinGW,最近有个项目需要用到cygwin,于是就有个疑问,这两个东西有什么区别?在网上看了些资料,在这里复制粘贴一下,以备后查。

    Unix下编译通过的C代码,在win32下编译是不能通过的 ,当然Unix 和win32的API都是符合标准C,也就是说,大多数函数调用在unix和win32下是相同的.但是,unix有自己一些独特的API(如fork,spawn,signals,select,sockets等),如果代码中使用了这些API,在win32下当然找不到对应的库.

    但是,这些API的功能在win32中也能实现,也许你已经发现了一个能让window编译Unix风格代码的方法:
        1.修改编译器,让window下的编译器把诸如fork的调用翻译成等价的形式--这就是mingw的做法.
        2.修改库,让window提供一个类似unix提供的库,他们对程序的接口如同unix一样,而这些库,当然是由win32的API实现的--这就是cygwin的做法.

    MinGW相比CygWin/gcc来讲,更加贴近win32。因为它几乎支持所有的Win32API。它所连接的程序,不需要任何第三方库即可运行。
    CygWin/gcc,其实这是两个东西。CygWin是一个让Windows拥有Unix-like环境的软件。而gcc就是安装在CygWin上的编译器。

    CygWin/gcc与MinGW的最大区别在于:使用CygWin/gcc可以在Windows下调用unix-like的API,(如fork,spawn,signals,select,sockets等)。也就是说Cygwin是运行在Windows下的,但是她使用的是Unix-like系统的函数和思想。由于这个区别,导致的结果就是用CygWin/gcc编译出来的程序可以无缝的运行在*nix环境下。但是如果调用了unix特有的API函数,在windows环境下不能正常运行,如果想在windows下正常运行的,就必须依赖cygwin1.dll,速度上会有些影响。
    而用MinGW编译出来的程序,如果源代码里面调用了unix环境的API,则MinGW会把这些对UNIX的API调用翻译成win32下等价的形式。同时这个程序是不能在windows下运行的。
    说白了,如果你是想在windows环境下开发Linux运行程序,那么CygWin/gcc是你的不二之选。
    而如果你想开发的是windows运行程序,并且追求速度,那么二者相比而言,MinGW是更好的选择。

    原文链接:http://blog.csdn.net/embededvc/article/details/6829010

  • 相关阅读:
    IDEA中代码无故报红解决方法
    CAP原则的基本理论知识
    Java IO 拷贝MP3文件,包括递归子文件夹下的文件
    maven 配置阿里云镜像 settings.xml内容
    Restful API 级别及意义
    日常巡检(脚本)
    使用Matplotlib画图系列(一)
    Python 阶乘factorial
    交叉验证思想
    FeatureSelectors
  • 原文地址:https://www.cnblogs.com/snipergodson/p/6221769.html
Copyright © 2011-2022 走看看