minGW-w64配置途径
文章目录
- 1 GNU、GCC与minGW
- 2 minGW当前下载方式
- 3 minGW-w64配置途径
- Step1
- Step2
- Step3
1 GNU、GCC与minGW

GNU这个名字是GNU's Not Unix的递归首字母缩写,它的发音为[g'noo],只有一个音节,发音很像"grew",但需要把其中的r音替换为n音。
GNU是一个类Unix操作系统。它是由多个应用程序、系统库、开发工具乃至游戏构成的程序集合。GNU的开发始于1984年1月,称为GNU工程。GNU的许多程序在GNU工程下发布,称之为GNU软件包。
类
Unix操作系统中用于资源分配和硬件管理的程序称为“内核”。GNU所用的典型内核是Linux。该组合叫作GNU/Linux操作系统。GNU/Linux为几百万用户所使用,然而许多人错误地称之为Linux。
——以上引用自
GNU官方网站。
简而言之,GNU就是我们大家通常认知的Linux。

GCC,即GNU Compiler Collection,GNU编译器集合。GNU编译器集合包括C、C++、Objective-C、Fortran、Ada、Go和D的前端,以及这些语言的库(libstdc++,…)。GCC最初是作为GNU操作系统的编译器编写的。GNU系统被开发成100%的自由软件,在尊重用户自由的意义上是自由的。
—— 以上翻译引用自GCC官方网站。
简而言之,GCC就是在GNU操作系统上使用的一种编译器。

minGW即Minimalist GNU for Windows。Mingw-w64是原始 mingw.org 项目的延伸,旨在支持Windows系统上的GCC编译器。
简而言之,minGW就是在Windows系统上使用的GCC编译器。
小白之所以要使用minGW,主要原因是发现github上很多源码工程需要使用Make进行编译。如果想在Windows系统上进行编译,就需要使用minGW。
2 minGW当前下载方式
小白查阅了一些博客文章,发现之前的下载方式都指向sourceforge,但是下载下来以后发现,这个链接的版本已经有些古老了。或者是下载下来以后发现其实是需要编译的源码。虽然说,GCC本身具有“自举”(bootstrap)特点,即可以用较老的版本来编译新的版本。但是对于初次使用的小白来说就非常不友好了。毕竟这个“鸡生蛋,蛋生鸡”的问题,总得先从一只“鸡”,或者从一个“蛋”开始。
最简单的办法就是去查找它的源头。minGW的官方网站地址为http://mingw-w64.org

全英文的网站,让我们一个单词一个单词去找。在网站左侧,有一个Downloads选项。

打开以后又是一大堆英文,绝大部分跟我们的目的不符,有很多跟Linux系统下使用或者编译有关。但是在快接近页面底部的地方,我们找到WinLibs.com的描述。
Standalone MinGW-w64+GCC builds for Windows, built from scratch (including all depencencies) natively on Windows for Windows.
编译好的版本!正是我们想要的。
于是前往WinLibs.com看看。

在Release versions里可以找到各种版本。可以看到当前的最新版本可以到12.2.0。
注意到下载列表里有两种类型,一种是UCRT 运行时,另一种是MVSCRT 运行时。关于这个问题的选择,我们可以看到在这一段的上方不远,有一个解释:

MSVCRT或UCRT运行时库选择
传统上,
MinGW-w64编译器使用MSVCRT作为运行时库,该库在所有版本的Windows上都可用。
由于
Windows 10通用C运行时(UCRT)可作为MSVCRT的替代品。UCRT也可以安装在早期版本的Windows上(请参阅:Windows中的UCRT更新)。
除非您的目标是旧版本的
Windows,否则UCRT作为运行时库是更好的选择,因为它是为了更好地支持最新的Windows版本以及提供更好的标准一致性而编写的(另请参阅:将代码升级到UCRT)。
简而言之,MSVCRT可以适用于所有的Windows版本,而win10及以上版本可使用UCRT。官方推荐使用更好的UCRT。
小白去查询了一下,UCRT对应的是Visual Studio 2015以上的版本。
3 minGW-w64配置途径
下载下来之后这其实是一个免安装版本,跟之前的exe用法并不相同。所以以下记录一下配置的方式。在WinLibs.com上是有说明的。
Step1
打开CMD(最好以管理员身份打开),确保提取的mingw32/bin或mingw64/bin文件夹位于PATH中,并且其位置不包含任何空格。
小白下载的是最新版本的64位。打算放在D盘,所以以下代码可以设置好它的临时环境变量:
SET PATH=D:\winlibs-x86_64-posix-seh-gcc-12.2.0-llvm-15.0.7-mingw-w64ucrt-10.0.0-r4\mingw64\bin;%PATH%
Step2
测试1:看一下当前的版本:
gcc --version
结果为
gcc (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
但是小白发现,这种临时设置的方式,只要你重新打开CMD就等于白设了。保险起见还是在环境变量里设置成永久的。

Step3
来个HelloWorld
notepad helloworld.c
内容填个
#include <stdio.h>int main ()
{printf("Hello world!\n");return 0;
}
用GCC编译一下:
gcc -o helloworld.exe helloworld.c
或者分步编译:
gcc -c -o helloworld.o helloworld.c
gcc -o helloworld.exe helloworld.o
结果不出意外:
Hello world!
至此我们配置成功了,后面就可以开始在Windows上编译用Make编译的C/C++工程。

相关文章:
minGW-w64配置途径
文章目录1 GNU、GCC与minGW2 minGW当前下载方式3 minGW-w64配置途径Step1Step2Step31 GNU、GCC与minGW GNU这个名字是GNUs Not Unix的递归首字母缩写,它的发音为[gnoo],只有一个音节,发音很像"grew",但需要把其中的r音替…...
程序、进程、线程的基本概念、信号量的PV操作、前趋图的PV操作
程序、进程、线程的基本概念 进程控制块PCB的组织方式:顺序方式、链接方式、索引方式、Hash。 在JVM 中进程与线程关系 进程: 拥有资源的独立单位。可以被独立调度。可以分配资源。 线程: 可以被独立调度。同一进程中的多个线程,…...
设计测试用例
目录 测试用例的基本要素 测试用例的设计方法 功能需求测试分析 非功能需求测试分析 设计测试用例的具体方法 测试用例的基本要素 测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境…...
CSS 选择器以及CSS常用属性
目录 🐇今日良言:可以不光芒万丈,但不要停止发光 🐯一、写CSS的三种方法 🐯二、CSS选择器的常见用法 🐯三、CSS常用属性 🐇今日良言:可以不光芒万丈,但不要停止发光 🐯一、写CSS的三种方法 CSS的基本语…...
测试概念及模型
今日目标掌握测试用例包含的基本内容使用等价类方法设计出测试用例1. 软件测试分类(复习)1.1 按阶段划分单元测试测试:针对单个功能进行测试,如:登录、购物车等开发(更多的理解):针对…...
王道计算机组成原理课代表 - 考研计算机 第六章 总线 究极精华总结笔记
本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 计算机组成 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!! 关于对 “总线” 章节知识点总结的十分全面,涵括了《计算机组成原理》课程里的…...
【C++升级之路】第八篇:string类
🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【C学习与应用】 ✒️✒️本篇内容:简单介绍string类的概念、string类的常用接口、string类的模拟实现(各个常见接口的实现代码&…...
mysql性能优化_原理_课程大纲
1、MySQL在金融互联网行业的企业级安装部署 目录章节版本说明版本说明安装MySQL规范1 安装方式2 安装用户3 目录规范MySQL 5.7 安装部署1 操作系统配置2 创建用户3 创建目录4 安装5 配置文件6 安装依赖包7 配置环境变量8 初始化数据库9 重置密码MySQL8 安装MySQL8 安装源码安装…...
项目管理报告工具的功能
项目报告软件哪个好?Zoho Projects的项目管理报告工具为您提供整个组织的360可见性,获取所有项目的实时更新,使用强大的项目报告软件推动成功。Zoho Projects的项目报告软件允许团队整理和监控他们的资源和项目,以评估进度并避免对…...
centos8上安装hbase
【README】1.本文部分内容转自:https://computingforgeeks.com/how-to-install-apache-hadoop-hbase-on-centos-7/2.本文是在单机上安装hbase (仅用于学习交流); 【1】更新系统因为 hadoop和hbase是动态的,为便于hbase…...
linux 进程及调度基础知识
引用Linux进程管理专题Linux进程管理与调度-之-目录导航Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)蜗窝科技-进程管理郭健: Linux进程调度技术的前世今生之“前世”郭健: Linux进程调度技术…...
Python计算分类问题的评价指标(准确率、精确度、召回率和F1值,Kappa指标)
机器学习的分类问题常用评论指标有:准确率、精确度、召回率和F1值,还有kappa指标 。 每次调包去找他们的计算代码很麻烦,所以这里一次性定义一个函数,直接计算所有的评价指标。 每次输入预测值和真实值就可以得到上面的指标值&a…...
51单片机LCD1602的使用
文章目录前言一、LCD1602简单介绍二、LCD1602中各个引脚的作用四、LCD1602命令解析1.写命令2.写数据3.清屏指令4.光标归位指令5.进入模式设置指令6.显示开关控制指令7.设定显示屏或光标移动方向指令三、LCD1602代码编写四、代码测试总结前言 本篇文章将为大家讲解LCD1602的使用…...
[深入理解SSD系列综述 1.5] SSD固态硬盘参数图文解析_选购固态硬盘就像买衣服?
版权声明:付费作品,未经许可,不可转载前言SSD (Solid State Drive),即固态硬盘,通常是一种以半导体闪存(NAND Flash)作为介质的存储设备。SSD 以半导体作为介质存储数据&…...
zio1升级到zio2踩坑和总结
并不全,记录了一些流程和注意点。新项目建议直接用zio2! 首先,从1.0迁移到2.0,可以使用官方的scalefix规则完成一部分方法自动替换(迁移主要解决方法重命名,去掉Has)。 然后,添加依…...
【算法题】1834. 单线程 CPU
插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 题目: 给你一个二维数组 tasks ÿ…...
Vue学习[2023]
笔记 一、Vue基础: 1.模板语法有2大类: 插值语法: 功能:用于解析标签体内容。 写法:{{xxx}},xxx是js表达式,且可以直接读取到data中的所有属性。 指令语法: 功能:用于…...
【Redis】Redis分片集群
【Redis】Redis分片集群 文章目录【Redis】Redis分片集群1. 搭建分片集群1.1 分片集群结构1.2 搭建分片集群1.2.1 集群结构1.2.2 准备实例和配置1.2.3 启动1.2.4 创建集群1.2.5 测试2. 散列插槽2.1 总结3. 集群伸缩4. 故障转移4.1 数据迁移5. RedisTemplate访问分片集群1. 搭建…...
【Android笔记81】Android之RxJava的介绍及其使用
这篇文章,主要介绍Android之RxJava及其使用。 目录 一、RxJava响应式编程 1.1、RxJava介绍 1.2、RxJava常用方法 (1)引入RxJava依赖...
Pr 定格拍照动画
哈喽,各位小伙伴!今天我们来学习一下如何制作定格拍照动画? 新建序列 新建一个1920*1080的序列,将视频拖入序列中 选择定格画面右键—插入帧定格分段中间部分就会变成一张图片(图片时长可伸缩) 复制素…...
Phi-4-mini-reasoning助力Java安装与环境配置:从JDK到IDE的智能指引
Phi-4-mini-reasoning助力Java安装与环境配置:从JDK到IDE的智能指引 1. 为什么需要智能指引来安装Java? 刚接触Java开发的朋友们,十有八九会在环境配置这一步卡壳。我见过太多初学者在JDK版本选择、环境变量配置这些环节反复折腾࿰…...
Kandinsky-5.0-I2V-Lite-5s保姆级教程:从访问https://gpu-1pm4kagkou-7860.web.gpu.csdn.net/开始
Kandinsky-5.0-I2V-Lite-5s保姆级教程:从访问https://gpu-1pm4kagkou-7860.web.gpu.csdn.net/开始 1. 认识Kandinsky-5.0-I2V-Lite-5s Kandinsky-5.0-I2V-Lite-5s是一款轻量级的图生视频模型,它能将静态图片转化为动态视频。你只需要上传一张图片&…...
LangGraph多智能体框架:构建持久化AI智能体的终极指南 [特殊字符]
LangGraph多智能体框架:构建持久化AI智能体的终极指南 🚀 【免费下载链接】langgraph Build resilient language agents as graphs. 项目地址: https://gitcode.com/GitHub_Trending/la/langgraph 在当今快速发展的AI领域,多智能体框架…...
AI+Python 双驱动计量经济学:从多源数据处理到 SCI 论文--多源数据处理、机器学习预测及复杂因果识别全流程实战随机森林模型核心技术
为什么你自学了这么久,还是做不出成果?很多科研人做计量经济学研究,最大的问题不是不够努力,而是没有一套完整的全链条体系:只学了模型操作,却不懂底层理论,换个研究问题、换个数据集就不会做了…...
OpenCore Legacy Patcher终极指南:让老旧Mac焕发新生的完整方案
OpenCore Legacy Patcher终极指南:让老旧Mac焕发新生的完整方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher…...
如何用Bypass Paywalls Clean突破付费墙限制?技术解析与实战指南
如何用Bypass Paywalls Clean突破付费墙限制?技术解析与实战指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在数字内容付费墙日益严密的今天,Bypass Payw…...
从LFA到TI-LFA:一张图看懂华为IGP FRR技术演进与选型指南
从LFA到TI-LFA:华为IGP FRR技术全景解析与实战选型 当视频会议因网络抖动出现卡顿时,当金融交易因路由收敛延迟导致订单丢失时,网络工程师们开始意识到:传统的IGP收敛机制已无法满足现代业务对可靠性的苛刻要求。这背后是毫秒级故…...
保姆级教程:在Ubuntu 24.04上用QEMU桥接网络,让虚拟机秒连外网
在Ubuntu 24.04上实现QEMU虚拟机与宿主机网络互通的终极指南 对于需要在本地环境测试国产操作系统或运行隔离开发环境的开发者来说,QEMU虚拟化方案因其轻量高效而备受青睐。但让虚拟机与宿主机网络互通往往成为新手的第一道门槛。本文将彻底解决这个问题——通过桥接…...
Python 数据库 ORM 实战:SQLAlchemy 详解
Python 数据库 ORM 实战:SQLAlchemy 详解 1. 背景与动机 ORM(对象关系映射)简化了数据库操作,使开发者可以使用面向对象的方式操作数据库。SQLAlchemy 是 Python 最强大的 ORM 工具,提供了灵活且功能丰富的数据库操作接…...
AWCII 040 CPU模块
AWCII 040 CPU 模块AWCII 040 是工业自动化控制系统中的中央处理单元(CPU 模块),主要用于执行控制程序、数据运算及系统管理,是整个控制系统的核心“大脑”。一、基本概述AWCII 040 CPU 模块集成了处理器、存储单元及系统管理功能…...
