码农的自我修养 - 关于MinGW和Cygwin
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相关推荐
- 码农的自我修养之 软件危机和软件过程
码农的自我修养之软件危机和软件过程 软件危机和软件过程 没有银弹 基于组件的软件工程方法 再论没有银弹 基于组件的软件供应链 软件危机的根本问题 软件危机的展望 软件过程模型 软件的生命周期概述 描述 ...
- 高效能码农的自我修养:5本书教你怎样科学学习,拒绝无用功
导读:作为一枚苦逼的码农,你需要学习很多东西.但在开始的开始,你学会学习了吗?科学.高效的学习方法,会让你事半功倍.今天书单姐推荐5本书,为你带来26种黄金学习法则.11个高效能学习习惯.效率加法的2 ...
- 论一个糟糕的大数据码农的自我修养
幸福的家庭都是一样的,不幸的家庭各有各的不幸 - 论一个糟糕的大数据平台工程师的自我修养 本来想写写如何成为一名优秀的大数据平台开发工程师,但说实话,这个话题太简单了!虽然我没有被Jeff dean大 ...
- 三十年软件开发之路:老码农的自我修养!
[CSDN编者按]"千帆过尽仍少年",对于程序员来说,保留技术初心.不断提升实力是夯实自己的不二法则.而本文的作者,作为一名有着三十多年开发经验的"老"程序员, ...
- 码农的自我修养 - 流程图 Flowchart
什么是流程图? 设计和文档化是一个过程,需要将不同的步骤从开始到结束都绘制出来.在这种情况下,一个错误就会导致整个系统崩溃,造成时间.金钱.资本设备的重大损失,甚至可能威胁到执行该过程的人力的安全 ...
- 码农的自我修养 - 关于ARM你需要知道的
据ARM公司的工程师说,第九代Arm处理器架构可以在这十年的剩余时间里支持所有的分布式计算.Arm的崛起是否意味着我们所知道的中央处理器的终结? 关于Arm处理器架构在任何计算或通信市场--智能手机. ...
- 码农的自我修养 - 指令集架构种类
指令集架构instruction set architecture (ISA),这是一个电脑模型的概括,有时也叫做计算机架构. ISA的具体实现有很多种,下面会介绍.不同的ISA实现在性能.物理空间和 ...
- 码农的自我修养 - ARM V9架构的巨大价值
ARM'S V9 ARCHITECTURE EXPLAINS WHY NVIDIA NEEDS TO BUY IT 我们中的许多人一直在绞尽脑汁,为什么Nvidia会花费巨资--高达400亿美元--来 ...
- 【原创】论码农的财富修养
<喜剧之王>里看到了演员的自我修养,然后想聊下码农的财富修养,这里不是聊理财,更多是保险Insurance: 保险是什么,是一种通过支付少量的保险费用来应对未知风险的机制,比如车险.财险. ...
最新文章
- 为了给你们讲清楚数据库中间件有哪些,我也是拼了!
- Jquery中获取表单的值并提交
- 未将对象引用设置到对象的实例--可能出现的问题总结
- 关于.NET编译的目标平台(AnyCPU,x86,x64) (转)
- 自定义一个springboot启动器
- dbscan算法_DBSCAN聚类算法探索
- ssdb php客户端接口文档
- 【数据结构与算法】之深入解析二叉树的算法实现和递归套路深度实践
- OAuth2.0在项目中的应用
- Java常用spark的pom.xml与读取csv为rdd到最终join操作+java常用pom.xml文件
- mysql explain 为空_车祸现场!我的MySQL千万级数据表选错索引了!
- The 15th UESTC Programming Contest Preliminary H - Hesty Str1ng cdoj1551
- curl put方法 测试http_HTTP接口调试利器!4.8万Star的HTTP命令行客户端!
- JAVA 代码交互率低的原因分析,深入剖析Java编程中的中文问题及建议最优解决方法...
- 前端工程师技能之photoshop巧用系列第一篇——准备篇
- Apache2.4 根目录修改
- 微信支付可以在App Store购买应用了 附绑定教程
- 【算法】排序_堆排序
- redux-form(V7.4.2)笔记( 五)核心模块回顾
- 苹果cms vod.html,苹果cms