MinGW/cygwin 快速开始

一、什么是 MinGW ?

官网: http://www.mingw.org/
MinGW 的全称是:Minimalist GNU on Windows 。它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API 和 MSYS,因此可以将源代码编译生成 Windows 下的可执行程序,又能如同在 Linux 平台下时,使用一些 Windows 不具备的开发工具。

一句话来概括:MinGW 就是 GCC 的 Windows 版本 。

  1. MinGW 是开源软件,可以免费使用。
  2. MinGW 由一个活跃的开源社区在持续维护,因此不会过时。
  3. MinGW 支持最新的 C语言 标准。
  4. MinGW 使用 Windows 的C语言运行库,因此编译出的程序不需要第三方 DLL ,可以直接在 Windows 下运行。
  5. 那些著名的开源 IDE 实际只是将 MinGW 封装了起来,使它拥有友好的图形化界面,简化了操作,但内部核心仍然是 MinGW。

MinGW 是稳定可靠的、持续更新的 C/C++ 编译器,使用它可以免去很多麻烦,不用担心跟不上时代,也不用担心编译器本身有严重漏洞,可以放心的去编写程序。

1. 安装 MinGW-w64

  • 打开下载地址:MinGW 进入下载页面
    https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/
    尽量不要使用install在线安装方式(因为慢),
    往下拉,如图,下载标红的 minGW,下载

点击x86_64-posix-sjlj或者x86_64-posix-seh就可以下载了。
在这里插入图片描述

二、什么是cygwin

cygwin官方的一个定义是Cygwin is not a way to run native linux apps on Windows. You have to rebuild your application from source if you want it to run on Windows.

cygwin不是让linux程序能在windows上运行的方法,如果你想要让linux程序能在windows运行,那么你只有用cygwin来重新编译一下源文件。

1. Cygwin安装

手把手的教你在windows上安装cygwin教程以及验证是否安装成功
参考URL: https://blog.csdn.net/qq_39897005/article/details/83787471
参考URL: https://blog.csdn.net/heshushun/article/details/78664384

1.1 安装过程
  1. 官网下载 setup安装文件
    官方下载https://cygwin.com/setup-x86_64.exe 注意64位下载64位cygwin,32位的下载32位的cygwin。cygwin是区分开的。

Cygwin的setup.exe安装文件,但是这个安装文件是属于Linux风格的,跟win下的安装风格不一样,准确的说就是:Cygwin的安装,并不是一键就能安装,他只是一个下载器,包括我之前使用的另一个Linux环境MinGW也是一样,他们都只提供一个下载器,帮咱们去下载他说需要的库文件。需要什么库都可以打开setup.exe去下载。

  1. 运行安装文件,现在在线安装
    在线安装选择镜像如下:
    http://mirrors.163.com/.help/cygwin.html
    http://mirrors.163.com/cygwin/
    http://mirrors.aliyun.com/cygwin/x86_64/release/

在这里插入图片描述3. 选择要安装的模块
选择安装如下基本的模块:

Base,Devel,Libs,Net,System,Utils等这几个最基本的分类下面的模块都选上。

即点击

Base,Devel,Libs,Net,System,Utils

的Default,使其都变成Install即可。

注意:
如下图:我选择的比上面列举的多,下载下来,发现非常占磁盘,光安装包12G,安装自动解压得到安装目录下来竟然80G左右,因此,强烈建议,少选,选自己需要的。
如果不知道怎么选,就选Base,Devel,Libs,Net,System,Utils这几个试试。
在这里插入图片描述

1.2 验证安装是否成功

安装完成后,桌面有个Cygwin64 Terminal,打开

输入 cygcheck -c cygwin
gcc --version
g++ --version
gdb --version
在这里插入图片描述

1.3 Clion配置使用cygwin

如下图:toolchains选择,你的cygwin安装目录即可
在这里插入图片描述

2. Cygwin使用总结

1)Cygwin这个软件,想问下如何在Cygwin中访问windows其他磁盘的文件?

输入 cd /cygdrive/(盘符) 进入相应的分区

三、Cygwin和MinGW有什么区别?

cygwin和mingw的区别
参考URL: https://www.xuebuyuan.com/3243775.html
MingW和cygwin的区别(转)
参考URL: MingW和cygwin的区别(转)

首先MingW和cygwin都可以用来跨平台开发。
MinGW是Minimalistic GNU for Windows的缩写,也就是Win版的GCC。
Cygwin则是全面模拟了Linux的接口,提供给运行在它上面的的程序使用,并提供了大量现成的软件,更像是一个平台。 (简单的说,Cygwin实现了unix系统调用API)

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

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

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

其次操作系统的 API也不一样,如Windows用CreateProcess()创建进程,而Linux使用fork()。
所以要移植程序必然要在这些地方进行改变,MingW有专门的W32api头文件,来把代码中Linux方式的系统调用替换为对应的Windows方式。而Cygwin则通过 cygwin1.dll这个文件来实现这种API的转换,并模拟一个Linux系统调用接口给程序,程序依然以Linux的方式调用系统API,只不过这 个API在cygwin1.dll上,cygwin1.dll再调用Windows对应的实现,来把结果返回给程序。

可以用查看他们编译好的程序的导入表来验证这点。
二者生成的程序都是能在Windows上运行的EXE文件,显然都是PE格式,用一个PE格式查看工具检查一下就能发现,Cygwin生成的程序依然有 fork()这样的Linux系统调用,但目标库是cygwin1。而MingW生成的程序,则全部使用从KERNEL32导出的标准Windows系统 API。
这样看来用Mingw编译的程序性能会高一点,而且也不用带着那个接近两兆的cygwin1.dll文件。
但Cygwin对Linux的模拟比较完整,甚至有一个Cygwin X的项目,可以直接用Cygwin跑X。
另外Cygwin可以设置-mno-cygwin的flag,来使用Mingw编译。
而与Cygwin更有可比性的MSys上的工具也是通过Cygwin这种模拟的方式来提供的。

区别总结:
1.修改编译器,让window下的编译器把诸如fork的调用翻译成等价的形式–这就是mingw的做法.
2.修改库,让window提供一个类似unix提供的库,他们对程序的接口如同unix一样,而这些库,当然是由win32的API实现的–这就是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是更好的选择

四、关于MSYS

Windows下使用Git+rsync构建文件同步工具
参考URL: https://blog.csdn.net/Blazar/article/details/109710997

当 MinGW 出现之后,程序员们发现光有 GCC 不行啊,面对着如此 naive 的 Windows 命令行也照样不能干活,Cygwin 又太大了。所以 MinGW 的一群人再次 fork 了 Cygwin,把它精简了一番,就成了 MSYS。后来,MinGW 咕咕咕了,MSYS 也随之咕咕咕了,又一群程序员 fork 了新版本的 Cygwin,精简了一番,给它加上了 Pacman 包管理器(没错就是 Arch Linux 用的那个),最后给 MSYS 的名字后面加了个 2,成了 MSYS2。

Windows 下使用 Git Bash 工具的时候,也经常会使用到 ls, grep 这类 Linux 下的命令,那么这个又是如何实现的?
找了一些资料,发现 Git for Windows 是基于 MSYS 做出来的。以下引用一段来自知乎网友的话:

(来源:https://www.zhihu.com/question/65055974/answer/227054790)

五、如何选择MingW和cygwin?

如果在windows开发linux程序,cygwin是很好的选择。如果你开发的程序不介意有一个cygwin1.dll的话,也是可以选择cygwin的。

如果你是想开发windows下的程序,还要必须用gcc的话,mingw是很好的一个选择。

总结:
要在Windows中使用GCC跨平台编译器的优势,请使用MinGW。
要利用Windows中的POSIX标准高级编程功能和工具的优势,请使用Cygwin。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值