Windows下使用GCC套件,并且模拟Unix/Linux的操作环境,一般使用的是MinGW和Cygwin。

让我们来一起认识一下。

MinGW

Minimalist GNU for Windows,前身为mingw32,是一个免费开源的软件开发环境,从2010年开始项目停止并不再使用。

MinGW的用途是什么?

MinGW是一个基于GNU GCC和Binutils项目的编译器系统,它可以将代码编译和链接到Win32(Windows)系统上运行,生成本地微软Windows应用程序。它提供C、C++和Fortran编译器以及其他相关工具。

What is the use of MinGW?MinGW is a compiler system based on the GNU GCC and Binutils projects that compiles and links code to be run on Win32 (Windows) systems. It provides C, C++ and Fortran compilers plus other related tools.

所以,通俗的说,MinGW就是用你在Linux上习惯的方式来使用GCC在Windows平台上编码并生成可运行的Windows程序。

MinGW是一个在Windows平台上使用的完整的GCC工具链(包括部分前端功能,如C、C++、Ada、Go等编程语言的编译),代码编译和链接过程中使用的是Windows操作系统组件C运行时库msvcrt.dll。它试图尽可能做到最简最少最小(因此而得名)。

这意味着,与Cygwin不同,MinGW并不试图在Windows之上提供一个完整的POSIX层,但另一方面,它也不要求你与一个特殊的兼容库链接(如上所说,只使用了Windows系统自带的库,并不依赖于任何第三方C-Runtime DLLs)。

MinGW包括:

- 移植到Windows上的GNU编译器集(GCC),包括C、C++、ADA和Fortran编译器。

- 适用于Windows的GNU Binutils(汇编器、链接器、归档管理器 / assembler, linker, archive manager)

- 命令行安装程序,包括MS-Windows上部署的MSYS和用来进行配置管理的终端工具(mingw-get)。

mingw-get.exe 是 MingGW(Minimalist GNU for Windows)开源项目中包含的命令行工具,可以在Windows下自动下载和安装C、C++、fortran语言的编译器及编译工具。

在网址: https://sourceforge.net/projects/mingw/files/Installer/  可以下载 mingw-get-setup.exe,通过运行 mingw-get-setup.exe 可以安装 mingw-get.exe 。

使用 mingw-get install 命令,可以安装以下语言的编译器或相关工具:

gcc,  g++,  gdb,  mingw32-make,  fortran。

比如要安装g++编译器:

MinGW-w64

https://www.mingw-w64.org/

Mingw-w64是原mingw.org项目的一个进化版,用于在Windows系统上支持GCC编译器。它在2007年从原MinGW分支出来,以提供对64位和新的API的支持。此后,它获得了广泛的使用和传播。

较新的MinGW-w64带有大约99%完整的Windows API绑定(不包括ATL等),包括x64支持和实验性ARM实现。你可能偶尔会发现一些奇特的常量未被定义,但对于99%的人在99%的时间内使用的东西,它工作得非常好。

你也可以使用POSIX中的大部分内容,只要它在Windows下以某种形式实现。POSIX中有一个主要特性fork功能,这个在MinGW无法使用,因为在Windows下没有这样的东西(Cygwin花了很大力气来实现它)。

还有一些细微差异,但总的来说,大多数功能是OK的。

MSYS

MSYS是 "Minimal SYStem "的缩写,是一个Bourne Shell命令行解释器系统。作为微软cmd.exe的替代品,它提供了一个通用的命令行环境,特别适合与MinGW一起使用,以便将许多开源应用程序移植到MS-Windows平台上;它是Cygwin-1.3的轻量级分支,包括一小部分Unix工具,来帮助实现开源应用程序移植到Windows上。

MSYS是Cygwin的简化版,和MinGW一样,从2010年开始项目停止并不再使用了。

MSYS2

一个简化的Cygwin,是其一个分支,继承了msys的修改,并与Cygwin的功能保持同步,集成在Pacman(软件包管理器)里。

Cygwin

Cygwin是什么?

它是由很多GNU软件和一些开放源码的工具组成的一个集合,用来在Windows上提供Linux系统的功能。

它包含一个DLL(cygwin1.dll),用来提供大量的POSIX API功能。

Cygwin是一个与POSIX兼容的编程和运行环境,可以在Microsoft Windows上原生运行。在Cygwin下,为类Unix操作系统设计的源代码可以通过最小的修改进行编译和执行。

最初,Cygwin被称为gnuwin32(不要与现在的GnuWin32项目相混淆)。这个名字被改成了Cygwin32,以强调cygnus solutions公司在创建它时的作用。当微软注册了Win32商标后,32被去掉了,直接成为Cygwin。

但Cygwin不是一种在Windows上运行本地Linux应用程序的方法。如果你想让你的应用程序在Windows上运行,你必须基于源码重新编译。

也不是一种使本地Windows应用程序可以使用UNIX功能的方法,如信号、ptys等。

TDM-GCC

https://jmeubank.github.io/tdm-gcc/

DM-GCC是一个用于Windows的编译器套件。

它结合了GCC编译器的最新稳定版本、一些对Windows友好的补丁,以及免费和开源的MinGW.org或MinGW-w64运行时API,以创建一个更轻量级的开源软件,用来替代微软的编译器和Windows平台SDK。

它可以创建32位或64位二进制文件,支持Windows XP及其之后的Windows版本。

它的安装文件只有一个,只需点击几下就能安装OK,当包含的包有新版本时,可以更新。

它包含了命令行工具。如果你想要一个可视化的IDE(文本编辑器、编译器界面、可视化调试器),可以使用Code::Blocks和TDM-GCC集成。

TDM-GCC重新混合和重新发布了由各种上游项目创建和支持的组件。可以在这些项目的论坛上找到更好的技术支持。

* DM-GCC is a compiler suite for Windows.

* It combines the most recent stable release of the GCC compiler, a few patches for Windows-friendliness, and the free and open-source MinGW.org or MinGW-w64 runtime APIs, to create a more lightweight open-source alternative to Microsoft’s compiler and platform SDK.

* It can create 32-bit OR 64-bit binaries, for any version of Windows since Windows XP.

* It has an easy-to-use single-file installer that creates a working installation with just a few clicks, and can update that installation when new packages become available.

* It consists of command-line tools only. If you want a visual IDE (text editor, compiler interface, visual debugger), Code::Blocks integrates well with TDM-GCC.

* TDM-GCC remixes and redistributes components that are created and supported by various upstream projects. You generally will find better support from those projects’ forums, rather than from TDM-GCC.

参考:

https://stackoverflow.com/questions/7790262/a-simple-explanation-of-what-is-mingw

码农的自我修养 - 关于MinGW和Cygwin相关推荐

  1. 码农的自我修养之 软件危机和软件过程

    码农的自我修养之软件危机和软件过程 软件危机和软件过程 没有银弹 基于组件的软件工程方法 再论没有银弹 基于组件的软件供应链 软件危机的根本问题 软件危机的展望 软件过程模型 软件的生命周期概述 描述 ...

  2. 高效能码农的自我修养:5本书教你怎样科学学习,拒绝无用功

    导读:作为一枚苦逼的码农,你需要学习很多东西.但在开始的开始,你学会学习了吗?科学.高效的学习方法,会让你事半功倍.今天书单姐推荐5本书,为你带来26种黄金学习法则.11个高效能学习习惯.效率加法的2 ...

  3. 论一个糟糕的大数据码农的自我修养

    幸福的家庭都是一样的,不幸的家庭各有各的不幸 - 论一个糟糕的大数据平台工程师的自我修养 本来想写写如何成为一名优秀的大数据平台开发工程师,但说实话,这个话题太简单了!虽然我没有被Jeff dean大 ...

  4. 三十年软件开发之路:老码农的自我修养!

    [CSDN编者按]"千帆过尽仍少年",对于程序员来说,保留技术初心.不断提升实力是夯实自己的不二法则.而本文的作者,作为一名有着三十多年开发经验的"老"程序员, ...

  5. 码农的自我修养 - 流程图 Flowchart

    什么是流程图?   设计和文档化是一个过程,需要将不同的步骤从开始到结束都绘制出来.在这种情况下,一个错误就会导致整个系统崩溃,造成时间.金钱.资本设备的重大损失,甚至可能威胁到执行该过程的人力的安全 ...

  6. 码农的自我修养 - 关于ARM你需要知道的

    据ARM公司的工程师说,第九代Arm处理器架构可以在这十年的剩余时间里支持所有的分布式计算.Arm的崛起是否意味着我们所知道的中央处理器的终结? 关于Arm处理器架构在任何计算或通信市场--智能手机. ...

  7. 码农的自我修养 - 指令集架构种类

    指令集架构instruction set architecture (ISA),这是一个电脑模型的概括,有时也叫做计算机架构. ISA的具体实现有很多种,下面会介绍.不同的ISA实现在性能.物理空间和 ...

  8. 码农的自我修养 - ARM V9架构的巨大价值

    ARM'S V9 ARCHITECTURE EXPLAINS WHY NVIDIA NEEDS TO BUY IT 我们中的许多人一直在绞尽脑汁,为什么Nvidia会花费巨资--高达400亿美元--来 ...

  9. 【原创】论码农的财富修养

    <喜剧之王>里看到了演员的自我修养,然后想聊下码农的财富修养,这里不是聊理财,更多是保险Insurance: 保险是什么,是一种通过支付少量的保险费用来应对未知风险的机制,比如车险.财险. ...

最新文章

  1. 为了给你们讲清楚数据库中间件有哪些,我也是拼了!
  2. Jquery中获取表单的值并提交
  3. 未将对象引用设置到对象的实例--可能出现的问题总结
  4. 关于.NET编译的目标平台(AnyCPU,x86,x64) (转)
  5. 自定义一个springboot启动器
  6. dbscan算法_DBSCAN聚类算法探索
  7. ssdb php客户端接口文档
  8. 【数据结构与算法】之深入解析二叉树的算法实现和递归套路深度实践
  9. OAuth2.0在项目中的应用
  10. Java常用spark的pom.xml与读取csv为rdd到最终join操作+java常用pom.xml文件
  11. mysql explain 为空_车祸现场!我的MySQL千万级数据表选错索引了!
  12. The 15th UESTC Programming Contest Preliminary H - Hesty Str1ng cdoj1551
  13. curl put方法 测试http_HTTP接口调试利器!4.8万Star的HTTP命令行客户端!
  14. JAVA 代码交互率低的原因分析,深入剖析Java编程中的中文问题及建议最优解决方法...
  15. 前端工程师技能之photoshop巧用系列第一篇——准备篇
  16. Apache2.4 根目录修改
  17. 微信支付可以在App Store购买应用了 附绑定教程
  18. 【算法】排序_堆排序
  19. redux-form(V7.4.2)笔记( 五)核心模块回顾
  20. 苹果cms vod.html,苹果cms

热门文章

  1. BIM族库下载——BIM厨卫洁具族库
  2. 8年老程序员帮我们已经在 Rails 中生成 PDF
  3. NYOJ--888-取石子(九) (反nim博弈)
  4. Linux Ubuntu Kugou 酷狗音乐的安装
  5. 开源ICC2013结题
  6. Android在MediaMuxer和MediaCodec录制视频示例 - audio+video
  7. 分享为小程序添加自动回复消息的好方法
  8. 万能恢复大师广告弹窗--问题解决
  9. Bash On Windows beta版食用笔记
  10. Git从master拉取新分支、合并分支