Windows安装MinGW和简单的使用教程

news2024/11/24 2:05:01

Windows安装MinGW和简单的使用教程

什么是MinGW?

MinGW,是Minimalist GNU for Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时(C Runtime)库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95发行版以上的 Windows OS 有效,使用基本运行时,你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时(C Runtime)扩展,与基本运行时相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 WindowsAPI功能(该段内容来自百度百科)。

 MinGW-w64是MinGW的64位版本,MinGW在多年前就已经将开发精力转移到64位系统上了,32位MinGW多年未曾更新了。以下的安装过程都建立在64位系统的基础上进行。

如何下载

可以前往MinGW的官网进行下载:Downloads - MinGW-w64

MinGW将其托管到sourceforge上了,也可以前往sourceforge下载:MinGW-w64 - for 32 and 64 bit Windows - Browse /Toolchains targetting Win64/Personal Builds/mingw-builds/8.1.0/threads-posix/seh at SourceForge.net

 在sourceforge上下载的话选择install.exe文件下载即可,小编接下来采用的就是这种方式。使用可执行安装文件进行安装对新手来说比较友好。也可以采用免安装的形式来下载安装MinGW。最后,如果使用带MinGW的codeblock,可以直接跳到环境变量配置过程。

如何安装

安装器安装

下载完install.exe文件后运行该软件,进入如下页面:

欢迎界面

点击next进入安装配置;

选择版本

选择安装的MinGW版本号,没有特殊要求的话(如果只是为了学习)直接安装最新版本即可:

选择系统架构

选择系统架构,X86_64是64位系统,i686是32位系统。

选择目标系统架构

选择操作系统接口协议:开发类Unix(linux,macOS,Unix等)系统的程序选择posix,开发Windows程序的选择win32即可。

异常处理类型

选择异常处理类型:异常处理在开发中非常重要,在开发的过程中,大部分的时间会耗在处理各种异常情况上。seh 是新发明的,而 sjlj 则是古老的。seh 性能比较好,但不支持 32位。 sjlj 稳定性好,支持 32位。建议64位操作系统选择seh。

安装路径

选择安装路径,点击next即可进入安装过程(需要联网下载MinGW的相应数据)。

安装完成后可以到相应的安装路径下看到这样的文件夹:

安装成功后路径

免安装版本

我们可以直接下载相应的MinGW的压缩包,解压也可得到上面安装后的文件夹。以上述的安装版本为例,我们要选择的安装版本如下图所示:

解压包

环境变量配置

安装完MinGW后需要进行环境变量的配置,在环境变量中的path变量中添加上面文件夹内的bin文件夹即可:

环境变量配置

校验

在命令提示符中输入​gcc-v​或者​g++ -v​,如果有输出内容,则证明配置成功。

校验

简易使用

编辑代码

使用记事本或者代码编辑器写一段程序(这里不推荐使用记事本,小编使用vscode)。

源代码

首先通过命令行进入你准备要创建文件的目录下进行后续操作。

编译过程

编译过程分为四个步骤:预处理、编译、汇编、链接。

1.预处理

预处理主要处理源文件中的“#include”、“#define”等预处理命令。

预处理主要完成的工作有:

(1)删除#define,展开宏;

(2)处理条件编译指令,预处理程序先判断条件,在根据条件修改源代码;

(3)删除注释;

(4)添加行号,以及文件名标识,便于调试

(5)删除“#include”,插入相应的头文件;

使用​g++ -E test.cpp -o test.i​​命令,预处理后得到​test.i​文件

预处理

2.编译

生成汇编代码的过程,使用命令​g++ -S test.i -o test.s.​生成汇编文件​test.s​文件,当然直接从​test.cpp​文件得到汇编文件也可以。

编译成汇编

3.汇编

将汇编代码转化成机器指令,生成目标二进制代码。

使用命令​g++ -c test.s -o test.o​生成​test.o​文件

汇编转化为机器指令

4.链接

通过链接库文件,将目标文件转化成可执行文件

使用命令​g++ test.o -o test.exe​

链接

当然,一般情况下,可以直接使用​g++ test.cpp -o test​ 就可以生成可执行程序了。

运行程序

最后使用命令test.exe,即可运行程序。

命令行运行程序

也可以直接点击exe文件进行运行。

点击运行

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

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

相关文章

在P4(Perforce)中使用TortoiseMerge来比较合并

一直习惯于svn的比较合并工具,会觉得p4自带的反人性。还好p4可以在设置里替换成外部的比较合并工具。方法见下图: 1. 比较 2. 合并 注意,如果合并设置有问题(某些P4版本),则需要通过一个bat文件来做中转&a…

聊聊看React和Vue的区别

Vue 更适合小项目,React 更适合大公司大项目; Vue 的学习成本较低,很容易上手,但项目质量不能保证...... 真的是这样吗?借助本篇文章,我们来从一些方面的比较来客观的去看这个问题。 论文档的丰富性 从两个…

Linux fork()||fork()问题

以下代码会输出几个"A"? int main() { fork() || fork();printf("A\n");} 代码分析: //父进程fork() || fork();printf("A\n");这里父进程中的第一个fork先执行,产生一个子进程: //子进程…

Electron-builder打包和自动更新

前言 文本主要讲述如何为 electron 打包出来软件配置安装引导和结合 github 的 release 配置自动更新。 electron-builder 是将 Electron 工程打包成相应平台的软件的工具,我的工程是使用 electron-vite 构建的,其默认集成了 electron-builder &#x…

K8S之存储卷

K8S之存储卷 一、emptyDir emptyDir:可实现Pod中的容器之间共享目录数据,但emptyDir存储卷没有持久化数据的能力,存储卷会随着Pod生命周期结束而一起删除二、hostPath hostPath:将Node节点上的目录/文件挂载到Pod容器的指定目录…

【JavaWeb】实训的长篇笔记(下)

文章目录 八、功能实现1、注册功能2、登录功能3、问题说明4、首页数据显示5、后台管理 八、功能实现 1、注册功能 jsp:能够在页面中把数据动态化,jsp和html在元素标签上是无区别的,区别是html中写上java代码就成了jsp文件。filename.jsp。 需…

Threejs学习01——坐标轴展示立方体并实现来回移动

在三维坐标轴上展示立方体并实现来回移动 这是一个非常简单基础的threejs的学习应用!创建应用先创建一个场景Scene,然后创建爱你一个透视相机PerspectiveCamera,然后创建立方体BoxGeometry,立方体添加一些材质,将立方…

SPSS多元线性回归操作入门实例

做农情反演的时候往往需要用到SPSS多元线性回归,这里提供一个操作案例 (一)SPSS安装 关于SPSS安装,请参考本人博客:保姆级SPSS图文安装教程_追忆苔上雪的博客-CSDN博客 (二)SPSS多元线性回归实例 在文章ArcGIS入门操作手册_追忆苔上雪的博…

Windows下升级jdk1.8小版本

1.首先下载要升级jdk最新版本,下载地址:Java Downloads | Oracle 中国 2.下载完毕之后,直接双击下载完毕后的文件,进行安装。 3.安装完毕后,调整环境变量至新安装的jdk位置 4.此时,idea启动项目有可能会出…

CCF考试:201703-1 分蛋糕(java代码)

1、【问题描述】 小明今天生日,他有n块蛋糕要分给朋友们吃,这n块蛋糕(编号为1到n)的重量分别为a1, a2, …, an。小明想分给每个朋友至少重量为k的蛋糕。小明的朋友们已经排好队准备领蛋糕,对于每个朋友,小明…

2023年新学期12306高铁火车学生票如何在线核验享受优惠?

2023学年优惠资质核验已开始,完成学生优惠资质核验后,您可以在线购买2022年10月1日至2023年9月30日的学生优惠票。(注:非该时间段需要重新核验,可享受学生优惠票); 『扩展阅读』 1、美团外卖红…

日常BUG——SpringBoot关于父子工程依赖问题

😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一、问题描述 在父子工程A和B中。A依赖于B,但是A中却无法引入B中的依赖,具体出现的…

新基建助推数字经济,CosmosAI率先布局AI超算租赁新纪元

伦敦, 8月14日 - 在英国伦敦隆重的Raffles OWO举办的欧盟数字超算新时代战略合作签约仪式,CosmosAI、Infinite Money Fund与Internet Research Lab三方强强联手,达成了历史性的合作协议,共同迈向超算租赁新纪元。 ​ 这次跨界的合作昭示了全球…

Docker入门指南:从零开始轻松掌握容器化技术【超级详细版】

文章目录 什么是Docker?平时应用部署的环境问题Docker解决依赖兼容问题Docker可以解决操作系统环境差异 Docker和虚拟机的区别Docker架构镜像容器仓库Docker的安装 Docker基本操作镜像操作容器操作数据卷(容器数据管理)1. 什么是数据卷2.数据…

C++初阶之一篇文章教会你stack(理解使用和模拟实现)

stack(理解使用和模拟实现) 什么是stackstack的使用1. stack构造函数2.empty()3.size()3.top()4.push5.emplace6.pop()7.swap 模拟实现stack的准备1.什么是容器适配器?2. deque的简单介绍3. deque的缺陷4. 为什么STL中stack和queue默认使用de…

抢红包系统---(java)

需求:直播抽奖活动,分别有【2,588,888,1000,10000】五个奖金,模拟抽奖。打印每个奖项,奖项的出现顺序随机但不重复。package demo;import java.util.Random;/* * 案例;抢红包 * 需求:直播抽奖活动,分别有【…

shell脚本循环语句

shell脚本循环语句 一.echo命令二.查看当前系统的时间--date命令三.循环语句for四.while循环语句结构五.while循环语句结构(迭代)六.continue和break 一.echo命令 echo -n 表示不换行输出 echo -e输出转义符,将转义后的内容输出到屏幕上 常…

抖音小程序排名代发需要提供什么资料

抖音小程序排名代发需要提供什么资料 抖音小程序如何做搜索排名,排名提升方法#小程序搭建#小程序建设#小程序排名# 营业执照,注册抖音的手机号,对公账户,关键词以及对应的图片 提供以上资料就可以 小程序包括两大功能&#xff0…

springboot 数据库版本升级管理常用解决方案

目录 一、前言 1.1 单独执行初始化sql 1.2 程序自动执行 二、数据库版本升级管理问题 三、spring 框架sql自动管理机制 3.1 jdbcTemplate 方式 3.1.1 创建数据库 3.1.2 创建 springboot 工程 3.1.3 初始化sql脚本 3.1.4 核心配置类 3.1.5 执行sql初始化 3.2 配置文…

Spark 学习记录

基础 SparkContext是什么?有什么作用? https://blog.csdn.net/Shockang/article/details/118344357 SparkContext 是什么? SparkContext 是通往 Spark 集群的唯一入口,可以用来在 Spark 集群中创建 RDDs 、累加和广播变量( Br…