MinGW 和 MinGW-w64 的介绍与配置

本文将介绍 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.rhkb.cn/news/501287.html

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

相关文章

二维码文件在线管理系统-收费版

需求背景 如果大家想要在网上管理自己的文件,而且需要生成二维码,下面推荐【草料二维码】,这个系统很好。特别适合那些制造业,实体业的使用手册,你可以生成一个二维码,贴在设备上,然后这个二维码…

【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 一、循环控制 / 跳转语句的使用 1. 循环控制语句(for 循环) 2. 循环控制语句(while 循环) 3. 跳转语句(break 语句) 4. 跳转语句(continue 语句&…

【Multisim用74ls92和90做六十进制】2022-6-12

缘由Multisim如何用74ls92和90做六十进制-其他-CSDN问答 74LS92、74LS90参考

计算机的错误计算(二百)

摘要 用三个大模型计算 exp(123.456). 结果保留10位有效数字。三个大模型的输出均是错误的,虽然其中一个给出了正确的 Python代码。 例1. 计算 exp(123.456). 保留10位有效数字。 下面是与第一个大模型的对话。 以上为与一个大模型的对话。 下面是与另外一个大模…

自行下载foremos命令

文章目录 问题描述其他小伙伴的成功解决方案,但对我不适用解决思路失败告终 最终解决成功解决思路解决步骤 问题描述 在kali系统终端中输入foremost,显示无此命令 其他小伙伴的成功解决方案,但对我不适用 解决思路 正常来说使用命令 apt-g…

docker 安装influxdb

docker pull influxdb mkdir -p /root/influxdb/data docker run -d --name influxdb -p 8086:8086 -v /root/influxdb/data:/var/lib/influxdb influxdb:latest#浏览器登录:http://192.168.31.135:8086,首次登录设置用户名密码:admin/admin1…

Leetcode打卡:我的日程安排表II

执行结果:通过 题目 731 我的日程安排表II 实现一个程序来存放你的日程安排。如果要添加的时间内不会导致三重预订时,则可以存储这个新的日程安排。 当三个日程安排有一些时间上的交叉时(例如三个日程安排都在同一时间内)&#…

创龙3588——debian根文件系统制作

文章目录 build.sh debian 执行流程build.sh源码流程 30-rootfs.sh源码流程 mk-rootfs-bullseys.sh源码流程 mk-sysroot.sh源码流程 mk-image.sh源码流程 post-build.sh 大致流程系统制作步骤 build.sh debian 执行流程 build.sh 源码 run_hooks() {DIR"$1"shiftf…

拟声 0.60.0 | 拟态风格音乐播放器,支持B站音乐免费播放

「拟声」是一款音乐播放器,不仅支持音视频的本地播放,还提供了账号注册功能,登录后可享受自动同步歌单、歌词等。它支持播放绝大多数音频格式,具备固定输出采样率、独占输出、内置均衡器和音调调整等功能。同时,它也支…

计算机网络 (16)数字链路层的几个共同问题

一、封装成帧 封装成帧是数据链路层的一个基本问题。数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。封装成帧就是在一段数据的前后分别添加首部和尾部,构成了一个帧。接收端在收到物理层上交的比特流后…

Linux Shell 脚本编程基础知识篇—awk的条件判断(3)

ℹ️大家好,我是练小杰,今天周五了,又是一周过去了😆 本文是有关Linux shell脚本编程的awk命令的条件语句,后续我会不断增加相关内容 ~~ 回顾:【awk字符串函数和内置变量】 更多Linux 相关内容请点击👉【Li…

小程序学习07—— uniapp组件通信props和$emit和插槽语法

目录 一 父组件向子组件传递消息 1.1 props (a)传递静态或动态的 Prop (b)单向数据流 二 子组件通知父组件 2.1 $emit (a)定义自定义事件 (b)绑定自定义事件 三 插槽语法…

【深度学习进阶】基于CNN的猫狗图片分类项目

介绍 基于卷积神经网络(CNN)的猫狗图片分类项目是机器学习领域中的一种常见任务,它涉及图像处理和深度学习技术。以下是该项目的技术点和流程介绍: 技术点 卷积神经网络 (CNN): CNN 是一种专门用于处理具有类似网格结构的数据的…

【pytorch-lightning】架构一览

pytorch-lightning是基于pytorch的一个套壳项目,适配pytorch的版本同步更新速度很快。 它将训练的几个主要流程模块化,减少重复工作,同时让支持分布式训练,不同平台的训练迁移变得更加简单。 官网链接

AWS K8s 部署架构

Amazon Web Services(AWS)提供了一种简化的Kubernetes(K8s)部署架构,使得在云环境中管理和扩展容器化应用变得更加容易。这个架构的核心是AWS EKS(Elastic Kubernetes Service),它是…

【Vue】vue项目中命名规范(结合上一篇项目结构)

组件命名规范: 多单词命名: 避免使用单个单词命名组件,因为这可能会导致命名冲突。相反,应该使用描述性的多单词命名,如 UserProfile、SettingsPanel 等。 使用帕斯卡命名法: 组件名称应该以大写字母开头&…

node.js之---事件循环机制

事件循环机制 Node.js 事件循环机制(Event Loop)是其核心特性之一,它使得 Node.js 能够高效地处理大量并发的 I/O 操作。Node.js 基于 非阻塞 I/O,使用事件驱动的模型来实现异步编程。事件循环是 Node.js 实现异步编程的基础&…

信息科技伦理与道德1:绪论

1 问题描述 1.1 信息科技的进步给人类生活带来的是什么呢? 功能?智能?陪伴?乐趣?幸福? 基于GPT-3的对话Demo DeepFake 深伪技术:通过神经网络技术进行大样本学习,将个人的声音、面…

uniapp 自定义类微信支付键盘 (微信小程序)

效果图 代码: <view class"popups popupsB"><view class"appreciatePrice"><view class"appreciatePriceTitle">赞赏金额</view><view class"appreciatePriceInput flex ac">&#xffe5;<input typ…

电子电气架构 --- 中央处理器HPC及软件架构

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…