MinGW-W64 下载、安装与配置(支持最新版的GCC,目前 GCC 13.2.0)

文章目录

    • 一、简介
      • 1. MinGW 和 MinGW-W64 区别和联系
      • 2. MSVCRT 和 UCRT 介绍
    • 二、下载
      • 1. 从 sourceforge.net 下载
      • 2. 从 github 下载
      • 3. 从 镜像站点 下载
      • 4. 自己编译
    • 三、安装与配置
      • 1. 在线安装
      • 2. 离线安装
      • 3. 环境配置
    • 四、总结

一、简介

1. MinGW 和 MinGW-W64 区别和联系

MinGW和MinGW-W64都是用于Windows平台的轻量级GNU工具链,用于开发和编译C和C++程序。

MinGW(Minimalist GNU for Windows)是一个32位的GNU工具链,它提供了一套基于GNU的开发环境,包括GCC编译器和一些GNU库,可以用来编译Windows下的C和C++程序。但MinGW只支持32位程序的编译。

MinGW-W64是一个64位的GNU工具链,是MinGW的升级版,原本它是MinGW的分支,后来成为独立发展的项目,它支持同时编译32位和64位程序。它包括了一系列的GNU库和工具,例如GCC、Binutils、GDB等,还支持一些实用工具和库,如OpenMP、MPI等。

总的来说,MinGW-W64可以看作是MinGW的升级版,它支持更多的编译选项和更多的库,可以编译出更加高效和安全的程序。

另外,MinGW-W64原本是从MinGW项目fork出来的独立的项目。MinGW 早已停止更新,内置的GCC最高版本为4.8.1,而MinGW-W64目前仍在维护,它也是GCC官网所推荐的。

关于更多 MinGW 和 MinGW-W64 相关的知识:

  • 科普MinGW MinGW-W64

  • what-is-the-difference-between-mingw-mingw-w64-and-mingw-builds

MinGW-w64官网:MinGW-w64

GCC官网:GCC, the GNU Compiler Collection - GNU Project

2. MSVCRT 和 UCRT 介绍

MSVCRT和UCRT都是用于Windows平台的C运行时库,提供了基本的C函数和类型,用于C程序的开发和运行。

MSVCRT(Microsoft Visual C Runtime)是Microsoft Visual C++早期版本使用的运行时库,用于支持C程序的运行。它提供了一些常用的C函数,如printf、scanf、malloc、free等。MSVCRT只能在32位Windows系统上运行,对于64位系统和Windows Store应用程序不支持。

UCRT(Universal C Runtime)是在Windows 10中引入的新的C运行时库,用于支持C程序的运行和开发。UCRT提供了一些新的C函数,同时还支持Unicode字符集和安全函数,如strcpy_s、strcat_s、_itoa_s等。UCRT同时支持32位和64位系统,并且可以与Windows Store应用程序一起使用。

总的来说,UCRT是Microsoft为了更好地支持Windows 10和Windows Store应用程序而开发的新一代C运行时库,相比于MSVCRT,UCRT提供了更多的功能和更好的兼容性。但对于旧的32位Windows系统,MSVCRT仍然是必需的。

二、下载

MinGW-w64 更新日志:

  • Changelog - MinGW-w64

MinGW-w64 源码地址:

  • Github上的:mingw-w64/mingw-w64: (Unofficial) Mirror of mingw-w64-code

  • sourceforge.net上的:mingw-w64

如果你对源码感兴趣或想要自己从源码编译MinGW-w64应用程序,上述源码供你使用。

如果你的github不稳定,可以参考:几款Github加速神器

官方没在任何地方提供二进制安装程序。

哪里找MinGW-w64二进制应用程序?

下面提供几种方式:

1. 从 sourceforge.net 下载

  • 在线安装

    • Win32 位:Toolchains targetting Win32/Personal Builds/mingw-builds/installer/mingw-w64-install.exe
  • 离线安装:

    • Win32 位:Toolchains targetting Win32/Personal Builds/mingw-builds
    • Win64 位:Toolchains targetting Win64/Personal Builds/mingw-builds

不推荐在线安装,安装过程特别慢,而且还可能失败!
注意:这里提供的二进制安装程序是旧的,支持的GCC版本停留在了"MinGW-W64 GCC-8.1.0"

截至目前GCC最新版本为:GCC-13.2
详情请参考:GCC Releases - GNU Project

如果你有特定需求,需要使用旧版本的,你可以参考下面的文章进行安装及配置:

  • 下载安装MinGW-w64详细步骤(c/c++的编译器gcc的windows版,win10真实可用)
  • MinGW-w64的安装及配置教程

2. 从 github 下载

  • 在线安装:
    • Releases · Vuniverse0/mingwInstaller (github.com)
  • 离线安装:
    • Releases · mmozeiko/build-gcc-mingw (github.com)
    • Releases · niXman/mingw-builds-binaries (github.com)

在线安装,需要先下载 mingwInstaller.exe (Installer of MinGW-W64 with GUI),后面介绍

3. 从 镜像站点 下载

网上找到的一个MinGW-w64镜像站点(不知道何方神圣提供的,用就完了)
http://files.1f0.de/mingw/
在这里插入图片描述

4. 自己编译

直接编译会比较复杂,这里推荐几个大神写好的MinGW-w64编译工具:

  • niXman/mingw-builds: Scripts for building the 32 and 64-bit MinGW-W64 compilers for Windows (github.com)
  • mmozeiko/build-gcc-mingw: Automatic 32-bit and 64-bit Windows build of gcc, mingw-w64, gdb and make. (github.com)

怎么使用?看对应的Readme介绍,本文不介绍。

三、安装与配置

1. 在线安装

这里不介绍 sourceforge.net上的在线安装,它上面的GCC版本太老了

这里介绍 Releases · Vuniverse0/mingwInstaller (github.com) 的在线安装方式:

1)下载mingwInstaller.exe
下载安装程序
2)以管理员身份运行mingwInstaller.exe,开始安装
安装引导
3)选择GCC版本
注意:Releases · Vuniverse0/mingwInstaller (github.com) 有好几个版本的mingwInstaller.exe,不同的版本支持的GCC版本不一样,我这里使用的是1.2.0版
选择gcc版本
4)选择软件架构
选择32bit还是64bit,看你自己的操作系统是多少位的
系统架构
5)选择线程模型
你开发的程序如果是运行在Windows系统上就选win32,如果是运行在其他系统(如 Linux,Unix,Mac OS等)就选posix
更多信息请参考:mingw-w64-threads-posix-vs-win32
选择线程模型
6)选择构建版本
选择构建版本,这里好像只有一个rev1,一般保持默认即可
选择构建版本
7)选择运行时库类型
选择运行时库类型,前面简介里有介绍
选择运行时类型
8)选择安装位置
可以勾选上Create shortcut on Desktop,使用会方便些
选择安装位置
9)安装过程(自动下载、解压、安装配置)
下载解压过程
安装完成

2. 离线安装

从 GitHub或镜像站点下载编译好的安装程序包(【二、下载】中提供的有地址)

以 niXman/mingw-builds-binaries/releases 为例,离线安装比较简单,只需下载解压即可

1)下载MinGW-w64的安装包
根据你自己的需要选择适合的安装包

  • 32位的操作系统,选择i686,64位的操作系统,选择x86_64
  • 13.1.0 是GCC的版本号,其他版本的你需要往下找;
  • win32是开发windows系统程序的协议,posix是其他系统的协议(例如Linux、Unix、Mac OS),更多信息参考:mingw-w64-threads-posix-vs-win32;
  • 异常处理模型seh(新的,仅支持64位系统),sjlj(稳定的,64位和32位都支持), dwarf(优于sjlj的,仅支持32位系统),更多信息参考:what-is-difference-between-sjlj-vs-dwarf-vs-seh/15685229;
  • msvcrtucrt 运行时库类型,有关介绍请参考文章简介部分;
  • rt_v11 运行时库版本;
  • rev1 构建版本;

下载MinGW-w64离线安装包

2)找一个地方解压(记住这个路径,后面配置环境变量用)

3. 环境配置

1)如果你是按照【1.在线安装】的,可以不用配置环境变量,直接打开MinGW-W64-64bit快捷方式(桌面或开始菜单),然后在打开的命令行窗口中直接就可以使用gcc等命令
验证MinGW-w64安装是否成功

2)如果你是按照【2.离线安装】的,将解压后的目录下的bin路径,手动添加到系统的PATH环境变量,怎么配置不用我就不演示了(实在是小白的话,自行百度吧),配置完后就可以在工作目录下使用gcc等命令了
(我这里的解压路径为:D:\Chen\MySoft\mingw64,配置的环境变量是这个路径下的bin目录路径)
配置环境变量
验证MinGW-w64是否安装成功

四、总结

  1. 【从sourceforge.net下载】中提供的安装程序,支持的GCC 8.1.0,版本太老了,不推荐你从这里下载安装;
  2. 【2. 从github下载】、【3. 从镜像网站下载】中提供的安装程序,支持的GCC版本都比较新,推荐从这里下载安装;
  3. 如果想要自己编译安装程序,你可以从【4. 自己编译】中推荐的工具进行编译安装你需要的MinGW-w64程序。

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

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

相关文章

LinearAlgebraMIT_8_TheRankOfMatrix

这节课中主要讲解根据秩来判断方程组/矩阵的(solvability)解情况,即通过秩来判断(aumented matrix)增广矩阵的解。我们需要直接求解方程组的解就是求解矩阵的解。 x.1 判断(非齐次线性方程组)Axb是否有解 我们以下面这个方程组为例,它具有3个约束条件和…

MyBatis and or使用列表控制or条件

背景&#xff1a;最近项目需要&#xff0c;师傅可以查找订单&#xff0c;而师傅是指定可以服务2到3个区域&#xff0c;故需要使用到and, or条件的组合&#xff0c;以下记一下代码。 最重要的代码是&#xff1a; 1、构建List<Consumer<LambdaQueryWrapper<T>>&g…

【微信小程序】通过使用 wx.navigateTo方法进行页面跳转,跳转后的页面中通过一些方式回传值给原页面

以下是几种常见的回传值的方式&#xff1a; 使用 wx.navigateTo 方法传递参数&#xff1a; 在跳转时&#xff0c;可以在目标页面的 URL 中携带参数&#xff0c;然后在目标页面的 onLoad 方法中获取参数&#xff0c;并在目标页面中进行处理。例如&#xff1a; // 原页面跳转到目…

26.Netty源码之ThreadLocal

highlight: arduino-light JDK ThreadLocal 如果你需要变量在多线程之间隔离&#xff0c;或者在同线程内的类和方法中共享&#xff0c;那么 ThreadLocal 大显身手的时候就到了。ThreadLocal 可以理解为线程本地变量&#xff0c;它是 Java 并发编程中非常重要的一个类。 ThreadL…

【BASH】回顾与知识点梳理(二十)

【BASH】回顾与知识点梳理 二十 二十. 十六至十九章知识点总结及练习20.1 总结20.2 练习 该系列目录 --> 【BASH】回顾与知识点梳理&#xff08;目录&#xff09; 二十. 十六至十九章知识点总结及练习 20.1 总结 shell script 是利用 shell 的功能所写的一个『程序 (prog…

《OWASP代码审计》学习——跨站脚本注入(XSS)

一、跨站脚本概述 1.什么是跨站脚本 跨站点脚本(XSS)是一种编码注入漏洞。它通常出现在 web 应用程序中。XSS 使攻击者能够向其他用户浏览的网页中注入恶意内容。XSS 允许攻击者绕过访问控制&#xff0c;它是 OWASP Top10 最常见的漏洞之一。XSS 是网络服务器上的第二大漏洞。…

基于java快餐店线上点餐系统设计与实现

摘 要 随着计算机互联网的高速发展。餐饮业的发展也加入了电子商务团队。各种网上点餐系统纷纷涌现&#xff0c;不仅增加了商户的销售量和营业额&#xff0c;而且为买家提供了极大的方便&#xff0c;足不出户&#xff0c;就能订到喜欢的餐品。网上点餐已经是人们生活中所不可缺…

Linux系统性能调优及调试课:Linux Kernel Printk

🚀返回专栏总目录 文章目录 0、printk 说明1、printk 日志等级设置2、屏蔽等级日志控制机制3、printk打印常用方式4、printk打印格式0、printk 说明 在开发Linux device Driver或者跟踪调试内核行为的时候经常要通过Log API来trace整个过程,Kernel API printk()是整个Kern…

amis百度前端框架,在js中使用amis写json转页面

amis百度前端框架&#xff0c;在js中使用用amis写的json页面 1.在项目中使用百度 amis 的sdk做开发库。 <script src"./sdk/sdk/sdk.js"></script> 2。加载sdk中的库&#xff1a; amis amisRequire(amis/embed);amisLib amisRequire(amis);const ma…

Flume拦截器

实现 Interceptor接口 方法1 是初始化: 方法2和3重载 拦截: 方法3 是关闭: 但是flume是通过内部类创建对象的

餐饮管理系统ssm酒店饭店仓库进销存jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 餐饮管理系统ssm 系统有1权限&#xff1a;管理员 二…

flask-sqlalchemy使用

# sqlalchemy 集成到flask中 # 第三方: flask-sqlalchemy 封装了用起来&#xff0c;更简洁 安装 pip install flask-sqlalchemy 使用 # 使用flask-sqlalchemy集成1 导入 from flask_sqlalchemy import SQLAlchemy2 实例化得到对象db SQLAlchemy()3 将db注册到app中db.in…

Vue中使用qrcode说明

1.安装 npm i qrcode1.5.3 2.导入 import QRCode from qrcode 3.转换 说明&#xff1a;拿到服务器传来的字符串&#xff0c;转换成base64&#xff0c;然后通过img标签展示。 // 字符串转成二维码 let result await this.$API.reqPayInfo(this.orderId); 总结&#xff1a;

Java一般用于postgis空间数据库通用的增删查改sql命令

目录 1 增加 2 删除 3 查询 4 更新 "public"."JGSQGW_Geo"为某模式下得表 一般postgrel有这样的设计模式 1 增加 #前端绘制出的数据插入 INSERT INTO "public"."JGSQGW_Geo" ( "geom","gridone","gridon…

集合Collection-List-ArrayList学习

一、集合 集合是数据容器。相较于数组集合具有以下几个特点&#xff1a; 数组一旦创建&#xff0c;长度不可改变。集合的长度会自动扩容。集合具有很多数组没有的功能函数API数组元素的存储特点单一&#xff0c;不同的集合有不同的存储特点。 1. Collection顶层接口 Collect…

Python3.x String内置函数大全

文章目录 总结一下Python3.x字符串的常用系统函数&#xff0c;总共分为8类1. 大小写字母转换类的函数str.capitalize()str.title()str.lower()str.upper()str.swapcase() 2. 统计类的函数str.count(str1, beg 0,endlen(string)) 3. 匹配类的函数str.endswith(suffix, beg0, end…

zustand:基于 Flux 模型实现的小型、快速和可扩展的状态管理

目录 ReactStep 1&#xff1a;安装Step 2&#xff1a;Store 初始化Step3&#xff1a;Store 绑定组件&#xff0c;就完成了!效果图 VueStep 1: 安装Step 2: Store 初始化Step 3: Store 绑定组件&#xff0c;就完成了!效果图 微前端为什么你需要 zustand-pub &#xff1f;安装ste…

Centos8上加速git clone

首先通过命令获取域名对应的IP地址 [rootggbond ~]# nslookup github.global.ssl.fastly.net [rootggbond ~]# nslookup github.com 之后如上获取到的IP地址 以IP-域名的格式加入到hosts文件中 [rootggbond ~]# vim /etc/hosts Centos8上更新DNS缓存 [rootggbond ~]# nscd -…

R语言5_安装Giotto

环境Ubuntu22/20, R4.1. 已开启科学上网。 第一步&#xff0c;更新服务器环境&#xff0c;进入终端&#xff0c;键入如下命令&#xff0c; apt-get update apt install libcurl4-openssl-dev libssl-dev libxml2-dev libcairo2-dev libgtk-3-dev libhdf5-dev libmagick9-dev …

Leecode螺旋矩阵 II59

59.螺旋矩阵II 题目建议&#xff1a; 本题关键还是在转圈的逻辑&#xff0c;在二分搜索中提到的区间定义&#xff0c;在这里又用上了。 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 文章讲解&#xff1a;代码随想录 视频…