MinGW 和 MinGW-w64 的介绍与配置

news2025/1/6 23:06:05

本文将介绍 MinGW 和 MinGW-w64 工具链的区别,并提供安装与配置的详细步骤。MinGW 是 Windows 上流行的 C/C++ 编译工具,而 MinGW-w64 是其现代化分支,支持更多功能和更好的兼容性。


一、什么是 MinGW 和 MinGW-w64

1. MinGW(Minimalist GNU for Windows)

  • MinGW 是一个轻量级的 Windows 开发工具链,提供 GCC 编译器,用于构建 C 和 C++ 程序。
  • 优点
    • 轻量级,简单易用。
    • 提供基础的 Windows API 支持。
  • 缺点
    • 仅支持 32 位程序开发。
    • 项目已多年未更新,功能较为有限。

2. MinGW-w64

  • MinGW-w64 是 MinGW 的分支项目,支持更现代化的开发需求。
  • 优点
    • 支持 32 位和 64 位程序开发。
    • 提供更全面的 Windows API 支持。
    • 支持现代 C 和 C++ 标准,包括多线程支持。
    • 更活跃的社区和更新频率。

二、MinGW-w64 的版本参数

MinGW-w64 的下载页面中会提供多个版本可供选择,这些版本的命名由以下参数组成:

1. 架构

  • i686:适用于 32 位系统或开发 32 位程序。
  • x86_64:适用于 64 位系统,推荐现代操作系统选择。

2. 线程模型

  • POSIX
    • 基于 POSIX 标准的线程实现,提供更好的兼容性和通用性。
    • 推荐大多数用户选择。
  • WIN32
    • 使用 Windows 原生线程实现,与 Windows 更贴近。
    • 适合特殊场景下的 Windows 原生开发。

3. 异常处理模型

  • SEH (Structured Exception Handling)
    • 64 位系统的默认异常处理模型。
    • 推荐用于 64 位开发。
  • DWARF
    • 适用于 32 位系统的异常处理模型。
    • 性能较好,但仅限于 32 位开发。
  • SJLJ (Set Jump/Long Jump)
    • 老旧的异常处理模型,性能稍差。
    • 不推荐使用,除非有兼容性需求。

4. 运行时库

  • UCRT (Universal C Runtime)
    • 现代 Windows 的通用运行时库,推荐。
  • MSVCRT (Microsoft C Runtime Library)
    • 使用微软的运行时库,适合需要兼容 Visual Studio 的场景。

三、推荐版本

假设您的系统是 64 位 Windows,推荐选择:

  • x86_64-14.2.0-release-posix-seh-ucrt
    • 架构:64 位。
    • 线程模型:POSIX。
    • 异常处理:SEH。
    • 运行时库:UCRT。

此版本适合大多数现代 Windows 开发需求,提供最佳的兼容性和性能。


四、安装 MinGW-w64 的步骤

1. 下载 MinGW-w64

  1. 访问 MinGW-w64 的 官方页面 或其 GitHub Releases 页面。
  2. 下载推荐的版本,例如:x86_64-14.2.0-release-posix-seh-ucrt.7z

2. 解压文件

  1. 使用 7-Zip 或其他解压工具解压 .7z 文件。
  2. 将解压后的文件放置在固定路径,例如:
    C:\mingw64
    

3. 配置环境变量

  1. 打开系统环境变量设置:
    • 在 Windows 搜索框中输入“环境变量”,选择 编辑系统环境变量
    • 点击 环境变量 按钮。
  2. 在系统变量中找到 Path,点击 编辑
  3. 新建一行,添加 MinGW 的 bin 目录路径,例如:
    C:\mingw64\bin
    
  4. 点击 确定 保存。

4. 验证安装

  1. 打开命令提示符(CMD 或 PowerShell)。
  2. 运行以下命令验证安装是否成功:
    gcc --version
    g++ --version
    
  3. 如果成功显示 GCC 和 G++ 的版本号,则说明安装完成。

五、其他 MinGW-w64 工具链选择

1. MSYS2

  • MSYS2 是一个基于 MinGW-w64 的现代开发环境,提供包管理工具 pacman
  • 安装步骤
    1. 下载 MSYS2:https://www.msys2.org/
    2. 安装完成后,打开 MSYS2 终端,运行以下命令安装 MinGW-w64 工具链:
      pacman -S mingw-w64-x86_64-gcc
      
    3. C:\msys64\mingw64\bin 添加到环境变量中。

2. TDM-GCC

  • TDM-GCC 是 MinGW-w64 的一个分支,提供了更简单的安装程序。
  • 下载地址:TDM-GCC 官网

六、总结

  • MinGW 是轻量级的 C/C++ 工具链,但已不适合现代开发需求。
  • MinGW-w64 是更推荐的选择,支持 32 位和 64 位开发。
  • 根据您的需求选择合适的版本参数,推荐使用 x86_64-posix-seh-ucrt
  • 如果需要更现代的开发环境,可以尝试 MSYS2。

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

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

相关文章

深入理解计算机系统—虚拟内存(一)

一个系统中的进程是与其他进程共享 CPU 和主存资源的。然而,共享主存会形成特殊的挑战。随着对 CPU 需求的增长,进程以某种合理的平滑方式慢了下来。但是如果太多的进程需要太多的内存,那么它们中的一些就根本无法运行。 为了更加有效地管理内…

九、Vue 事件处理器

文章目录 前言一、基础事件绑定:v-on 指令二、方法调用:组织有序的交互逻辑三、事件修饰符阻止冒泡与默认事件捕获与自身触发单次触发与鼠标按键区分四、按键修饰符前言 在 Vue.js 的交互世界里,事件处理器起着举足轻重的作用,它让页面从静态展示迈向动态交互,精准捕捉用户…

Quartus In-System Sources and Probes Editor 的使用说明

文章目录 前言使用说明参考资料 前言 Quartus 提供了 In-System Sources and Probes Editor 调试工具,通过 JTAG 接口使用该工具可以驱动和采样内部节点的逻辑值。即通过 Sources 功能来驱动 FPGA 内部信号,通过 Probes 功能来探测内部节点的逻辑值。在…

springboot整合Quartz实现定时任务

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1.核心概念2.基础实现2.1引入依赖2.2创建具体逻辑类2.3配置类 总结 前言 在项目中我们会有许多要进行定时执行逻辑的业务场景,比如定期生成日报、定…

阿里云 ECS 服务器绑定多个公网IP

阿里云 ECS 服务器绑定多个公网IP 一、弹性公网IP绑定ECS服务器 单台ECS一般只能直接绑定一个弹性公网IP,但是可以绑定多张弹性网卡,如果把弹性公网IP绑定到弹性网卡上,那么单台ECS就能间接绑定多个弹性公网IP。但有的服务器系统镜像可能不…

线性代数考研笔记

行列式 背景 分子行列式:求哪个未知数,就把b1,b2放在对应的位置 分母行列式:系数对应写即可 全排列与逆序数 1 3 2:逆序数为1 奇排列 1 2 3:逆序数为0 偶排列 将 1 3 2 只需将3 2交换1次就可以还原原…

LLM - 使用 LLaMA-Factory 部署大模型 HTTP 多模态服务 (4)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144881432 大模型的 HTTP 服务,通过网络接口,提供 AI 模型功能的服务,允许通过发送 HTTP 请求,交互…

数据库知识汇总2

一. 范式 定义:范式是符合某一种级别的关系模式的集合。 关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式; 一个低一级范式的关系模式,通过模式分解(schema decomposition)可以转换为若干个高一…

TP 钱包插件版本的使用

目前 TokenPocket 的几个平台中,以 ios 和 安卓版本最为常见,其实很少有人知道,浏览器上有一个插件版本的 Tp, 用电脑多的话,这也是一个挺好的选择。 最新版本现在支持Chrome、Brave 浏览器、Edge(Firefox及Opera正在…

反向传播算法的偏置更新步骤

偏置的更新步骤 假设我们有一个三层神经网络(输入层、隐藏层和输出层),并且每层的激活函数为 sigmoid 函数。我们需要更新隐藏层和输出层的偏置。以下是详细的步骤: 1. 计算误差项(Error Term) 输出层的…

(二)当人工智能是一个函数,函数形式怎么选择?ChatGPT的函数又是什么?

在上一篇文章中,我们通过二次函数的例子,讲解了如何训练人工智能。今天,让我们进一步探讨:面对不同的实际问题,应该如何选择合适的函数形式? 一、广告推荐系统中的函数选择 1. 业务目标 想象一下&#x…

Vue3 中的插槽

Vue3 中插槽的使用&#xff0c;插槽是 Vue 中的一个特别特性&#xff0c;插槽就是模版内容。例如<h1>标题 1</h1>标题 1 就是插槽&#xff0c;Vue 是无法识别模板内容的&#xff0c;只能通过属性进行传递。Slot 主要包括默认、具名和作用域。Slot开发起来难度不大&…

单元测试3.0+ @RunWith(JMockit.class)+mock+injectable+Expectations

Jmockit使用笔记_基本功能使用Tested_Injectable_Mocked_Expectations_jmockit.class-CSDN博客 静态变量直接赋值就好&#xff0c;没必要mock了 测试框架Jmockit集合junit使用 RunWith(JMockit.class) 写在测试案例类上的注解 Tested 在测试案例中,写在我们要测试的类上…

靶机系列|VULNHUB|DC-3

描述 DC-3 是另一个专门建造的易受攻击实验室&#xff0c;旨在获得渗透测试领域的经验。 与之前的 DC 版本一样&#xff0c;这个版本的设计考虑到了初学者&#xff0c;尽管这一次只有一个标志、一个入口点&#xff0c;根本没有线索。 必须具备 Linux 技能和熟悉 Linux 命令行…

sqlserver sql转HTMM邮件发送

通过sql的形式&#xff0c;把表内数据通过邮件的形式发送出去 declare title varchar(100) DECLARE stat_date CHAR(10),create_time datetime SET stat_dateCONVERT(char(10),GETDATE(),120) SET create_timeDATEADD(MINUTE,-20,GETDATE()) DECLARE xml NVARCHAR (max) DECLAR…

MCU芯片是什么意思_有哪些作用?

MCU(Microcontroller Unit)芯片&#xff0c;即微控制单元&#xff0c;是一种集成了中央处理器(CPU)、存储器(ROM、RAM)以及各种外设接口(如输入输出引脚、定时器、串口等)的集成电路芯片。它通过超大规模集成电路技术&#xff0c;将具有数据处理能力的中央处理器、随机存储器、…

朱姆沃尔特隐身战舰:从失败到威慑

前言 "朱姆沃尔特"号驱逐舰是美国海军雄心勃勃的项目&#xff0c;旨在重塑未来海战。它融合了隐身、自动化和强大火力&#xff0c;然而由于技术问题和预算超支&#xff0c;原计划建造32艘的目标被大幅缩减&#xff0c;最终只建造了三艘。该舰的设计特点包括“穿浪逆船…

【虚拟机】VMware 16图文安装和配置 AlmaLinux OS 9.5 教程

准备工作 下载AlmaLinux ISO文件&#xff1a;从AlmaLinux官方网站&#xff08;https://almalinux.org/&#xff09;下载最新版本的ISO文件。 安装VMware Workstation&#xff1a;确保您的计算机上已安装VMware Workstation。&#xff08;注&#xff1a;我这边使用的是VMware16…

【论文阅读】SCGC : Self-supervised contrastive graph clustering

论文地址&#xff1a;SCGC : Self-supervised contrastive graph clustering - ScienceDirect 代码地址&#xff1a; https://github.com/gayanku/SCGC 摘要 图聚类旨在发现网络中的群体或社区。越来越多的模型使用自编码器&#xff08;autoencoders&#xff09;结合图神经网…

如何利用Logo设计免费生成器创建专业级Logo

在当今的商业世界中&#xff0c;一个好的Logo是品牌身份的象征&#xff0c;它承载着公司的形象与理念。设计一个专业级的Logo不再需要花费大量的金钱和时间&#xff0c;尤其是当我们拥有Logo设计免费生成器这样的工具时。接下来&#xff0c;让我们深入探讨如何利用这些工具来创…