MinGW MinGW-W64介绍

news2024/9/21 2:44:43

Table of content

0 Preface/Foreword

1 MinGW-w64

1.1 使用MinGW-w64的原因

1.2 MinGW-w64使用场景

1.3 官网

2 GCC & LLVM

2.1 编译器构成

2.2 GCC

2.3 LLVM

2.3.1 Clang


0 Preface/Foreword

MInGW全称为:Minimalist GNU on Windows.将经典的开源C语言编译器GCC移植到了Windows平台下,并且包含了Win32API,因此可以将源代码编译为在Windows中运行的可执行程序。

而且还可以使用一些Windows不具备的,Linux平台下的开发工具。概括来讲:MinGW 是GCC的Windows版本。

MinGW-w64与MinGW的区别:

  • MinGW只能编译生产32位可执行程序;
  • MinGW-w64可以编译成64bit或者32bit可执行程序

1 MinGW-w64

1.1 使用MinGW-w64的原因

讲原因我们就可以从它的优势说起:

  • 开源软件,可以免费使用
  • 是一个活跃的开源社区在维护,不会过时
  • 支持最新的C语言标准
  • 使用Windows的C语言运行库,因此编译出的程序不需要第三方DLL,可以直接在Windows下运行
  • 流行的IDE本质上是将MinGW-w64进行了封装,使得具有良好的GUI,简化了操作,但是内部的核心还是MinGW-w64
  • 是稳定的、可靠的、持续更新的C/C++编译器,使用可以免去很多麻烦,不用担心过时,也不用担心编译器本身有bug

1.2 MinGW-w64使用场景

  • 对于C语言初学者,适合用MinGW-w64,因为可以知道编译程序的细节
  • 相比于VS2015等编译器,MinGW-w64属于手动编译,而VS2015属于自动编译

1.3 官网

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

2 GCC & LLVM

2.1 编译器构成

传统编译器分为三个部分:

  • Frontend,前端:语义(Semantic)和语法(Syntax)分析,将源代码转换成抽象语法树(Abstract Syntax Tree);
  • Optimizer,优化器:在前端基础上,对中间代码进行优化;
  • Backend,后端:将优化后的中间代码转化为针对各自平台的机器代码;

2.2 GCC

GCCGNU Compiler Collection,GNU编译器套装,一套由GNU开发的编程语言编译器。GCC原名GNU C语言编译器,刚开始只能编译C语言。后来GCC经过扩展,可以处理C++、Objective-C、Java等其他语言。

2.3 LLVM

LLVM:Low Level Virtual Machine,底层虚拟机,提供与编译器相关支持,能够进行程序语言的编译器优化、链接优化、在线编译优化、代码生成,可以作为多种编译器的backend使用。

2.3.1 Clang

Clang是LLVM的frontend,只支持C、C++和Objective-C三种语言。        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/432161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity VFX -- (4)创建burst粒子效果

如果用户成功达成某个目标,我们可以使用一个爆裂的礼花来激励用户。如果角色挥舞刀剑,我们可以做出剑气来增加气势。如果角色落到地面上,我们可以在脚部做出飞舞的灰尘来增加表现力。这些都可以视为burst粒子效果。 下面是一些burst粒子效果&…

JVM学习(六):类加载子系统

目录 〇、前言 一、类加载子系统 1.1 内存结构概述 1.2 类加载器及类加载过程概述 1.2.1 类加载器 1.2.2 类加载过程 1.3 类加载过程一:Loading 1.3.1 加载过程 1.3.2 加载类的方式 1.4 类加载过程二:Linking 1.4.1 验证(Verify) 1.4.…

贯穿设计模式第八话--设计原则总结篇

🥳🥳🥳 茫茫人海千千万万,感谢这一刻你看到了我的文章,感谢观赏,大家好呀,我是最爱吃鱼罐头,大家可以叫鱼罐头呦~🥳🥳🥳 从今天开始,将…

在uos上编译opencv

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 下载源码并创建build文件夹 系统环境为操作系统为:UnionTech OS Server 20 Enterprise,处理器为: 华为鲲鹏处理器(ar…

C++11(上)

目录 1:列表初始化 2:std::initializer_list 3:变量类型推导 3.1:auto推导类型 3.2:decltype 3.3:nullptr 4:范围for 5:STL新增容器和容器新增接口 5.1:array 6:左值引用和右值引用 6.1:左值 6.2:右值 6.3:左值引用 6.4:右值引用 6.5:左值…

python常用库之time库

目录 一、前言time库中的常用函数 二、time()函数三、localtime()和gmtime()函数四、strftime() 、asctime()、mktime()函数(一)strftime()函数(二)asctime()函数(三)mktime()函数 五、ctime()函数六、stri…

【2023最新】超详细图文保姆级教程:App开发新手入门(5)

上文回顾,我们已经完成了一个应用的真机调试,本章我们来了解一下如何引入YonBuilder移动开发的(原生)移动插件, 并利用移动插件完成一个简单的视频播放器。 8. 「移动插件」的使用 8.1 什么是 「移动插件」? 用通俗…

TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:1~5

原文:Mobile Deep Learning with TensorFlow Lite, ML Kit and Flutter 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的…

【高危】Apache Spark 权限提升漏洞(CVE-2023-22946)

漏洞描述 Apache Spark 是一款支持非循环数据流和内存计算的大规模数据处理引擎。 使用 spark-submit 脚本在集群中启动任务可以通过指定proxy-user参数限制运行用户。在 Apache Spark 受影响版本中,攻击者通过指定自定义的classpath,则可以覆盖该配置…

2023最新面试题-Java-3

IO流 1. java 中 IO 流分为几种? 按照流的流向分,可以分为输入流和输出流;按照操作单元划分,可以划分为字节流和字符流;按照流 的角色划分为节点流和处理流。 Java Io 流共涉及 40 多个类,这些类看上去很杂乱&…

ChatGPT 70+款可以免费使用的AI工具,建议收藏

ChatGPT风靡全球,人人可用! 小红书上有关ChatGPT的笔记已有10w篇,相关话题浏览量也达到了1.12亿次。其中讨论最为热烈的,要数“ChatGPT使用教程”。(当然,类似的话题还包括,教你如何使用Midjour…

Navicat图表查看器 Crack

Navicat图表查看器 Crack Navicat图表查看器是一个查看图表工作区文件的简单工具。您可以浏览Navicat的图表工具和Navicat图表创建者创建的区域。 Navicat图表查看器,将图表中的数据显示为强大的可视化效果,允许您使用图形和图表查看数据。 将您的信息转…

Internet Download Manager(IDM)v6.41.11 免激活不弹窗版

Internet Download Manager(IDM)v6.41.11 免激活不弹窗版可提升你的下载速度多达5倍,安排下载时程,或续传一半的软件。Internet Download Manager的续传功能可以恢复因为断线、网络问题、计算机宕机甚至无预警的停电导致下传到一半…

大数据开发必备面试题Flume篇合集

大数据开发必备面试题Flume篇合集 1 、详细介绍Flume有哪些组件?2、你是如何实现Flume数据传输的监控的?3、Flume参数怎么调优?4、简述下Flume的事务机制。5、 Flume采集数据会丢失吗?6、简述下Flume使用场景。7、简述下 Flume丢包问题。8、…

【C语言】文件操作

目录 1.为什么使用文件 2.什么是文件 2.1 程序文件 2.2 数据文件 2.3文件名 3.文件的打开和关闭 3.1文件指针 3.2文件的打开和关闭 4.程序的顺序读写 4.2对比一组函数 5.文件的随机读写 5.1 fseek 5.2 ftell 5.3 rewind 6.文本文件和二进制文件 7.文件读取结束的…

2023年银行理财子公司研究报告

第一章 行业发展概况 1.1 行业概况 所谓“银行理财子公司”,其实就是由商业银行作为控股股东发起设立的,并经国务院银行业监督管理机构批准;主要从事理财业务;独立于母行,具有独立法人地位的非银行金融机构。像工商银…

Redission分布式锁

实现过程: 只要线程一加锁成功,就会启动一个 watch dog 看门狗,它一个后台线程, 会每隔 10 秒检查一下,如果线程 1 还持有锁,那么就会不断延长锁 key 生存时间。因此,Redisson 解决了锁过期释放…

Commitizen规范git提交代码

首先全局安装Commitizen,运行: npm install -g commitizen 然后在项目中开启终端,安装cz-customizable npm i cz-customizable --save-dev 然后在package.json中配置如下代码: "config": {"commitizen":…

虹科干货| 虹科Redis企业版数据库:告别游戏卡顿,让快乐加速!

“卡顿一分钟,玩家两行泪” 游戏已成为年轻人最主要的消遣娱乐方式之一,游戏卡顿给玩家带来糟糕游戏体验背后的原因是什么?数据存储与查询速度不够快! 游戏开发领域,不仅拥有海量的数据,甚至还要做到实时…

Flowable6.x导出/查看/跟踪流程图

Flowable6.x导出/查看/跟踪流程图 项目源码仓库 Flowable诞生于Activiti,是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义,可以十分灵活地加入你的应用/服务/构架。 本文介绍4种绘制流程图的方式,前…