MinGW的安装和使用

news2024/9/24 17:09:13

以下内容源于网络资源的学习与整理,如有侵权请告知删除。

参考博客

1、如何在Windows上使用GCC编译器?

2、MinGW安装和使用-腾讯云开发者社区-腾讯云

一、MinGW的简介

GCC 官网提供的 GCC 编译器是无法直接安装到 Windows 平台上的,如果我们想在 Windows 平台使用 GCC 编译器,可以安装 GCC 的移植版本。

目前适用于 Windows 平台、受欢迎的 GCC 移植版主要有 2 种,分别为 MinGW 和 Cygwin。

其中,MinGW 侧重于服务 Windows 用户可以使用 GCC 编译环境,直接生成可运行 Windows 平台上的可执行程序,相比后者体积更小,使用更方便。而 Cygwin 则可以提供一个完整的 Linux 环境,借助它不仅可以在 Windows 平台上使用 GCC 编译器,理论上可以运行 Linux 平台上所有的程序。

MinGw 全称 Minimalist GNU for Windows,应用于 Windows 平台,可以为我们提供一个功能有限的 Linux 系统环境以使用一些 GNU 工具,比如 GCC 编译器、gawk、bison 等等。

它由以下几部分组成:

  • 编译器(支持C、C++、ADA和Fortran);
  • GNU工具;
  • mingw-get(用于Windows平台安装和部署MinGW和MSYS的命令行安装器);
  • mingw-get-inst(用于GUI打包)。

二、MinGW的安装

1、下载下载器

MinGW官方网址:http://www.mingw.org/。

如果上述网站出错,则到网址 MinGW - Minimalist GNU for Windows 下载。

上述操作将得到一个名为 mingw-get-setup.exe 的安装文件。

2、安装下载器

1、双击运行刚刚下载的安装文件,看到如下界面:

2、点击“Install”进入下面界面,然后选择默认的安装路径即 C:\MinGW,点击"Continue"继续。

3、等待安装完成(可能会有错误提示,多尝试几次就好),然后点击"Continue"。

此时桌面出现下面图标,并且C:\MinGW\bin目录下存在mingw-get.exe文件,则表明安装成功。

3、安装组件

上面只是安装了一个下载器。接下来我们将通过这个下载器,在线下载与安装所需的组件。

1、双击运行下载器(有的版本在安装之后会自动运行),看到下面这个界面:

2、选择所需的组件,然后右键选择“Mark for Installation”。

这里为了使 GCC 同时支持编译 C 语言和 C++,需勾选下图中标注的 2 项。

在安装程序中,复选框为绿色表示已经安装的项目,复选框为白色表示没有安装的项目。因此如果需要删除,只需要在绿色复选框右键后选择“Mark for removal”即可。

勾选完成后,在菜单栏中选择Installation -> Apply Changes,弹出如下对话框:

选择“Apply”,然后耐心等待,直至安装成功,即可关闭此界面。

3、由于某些不明的原因,整个安装过程中可能会提示某些组件下载失败,但没关系,后续需要时可以通过 MinGw Installer安装界面中的 “All Packages”选项中,手动选择指定的安装包进行安装。

或者在联网状态下,(先把C:\MinGW\bin写入环境变量中,见下面第5点)在Windows 平台的命令窗口中输入“mingw-get install gcc”,这个操作会自动补全gcc相关的组件。

Microsoft Windows [版本 10.0.22624.1680]
(c) Microsoft Corporation。保留所有权利。

C:\Users\XJH>mingw-get install gcc
http://prdownloads.sourceforge.net/mingw/libquadmath-6.3.0-1-mingw32-dll-0.tar.xz?download
165.01 kB / 165.01 kB   |================================================| 100%
http://prdownloads.sourceforge.net/mingw/libgomp-6.3.0-1-mingw32-dll-1.tar.xz?download
59.55 kB / 59.55 kB     |================================================| 100%
http://prdownloads.sourceforge.net/mingw/binutils-2.28-1-mingw32-bin.tar.xz?download
2.50 MB / 2.50 MB       |================================================| 100%
http://prdownloads.sourceforge.net/mingw/gcc-core-6.3.0-1-mingw32-bin.tar.xz?download
13.09 MB / 13.09 MB     |================================================| 100%
http://prdownloads.sourceforge.net/mingw/gcc-core-4.8.1-4-mingw32-doc.tar.lzma?download
7.03 MB / 7.03 MB       |================================================| 100%
http://prdownloads.sourceforge.net/mingw/gcc-6.3.0-1-mingw32-man.tar.xz?download
244.10 kB / 244.10 kB   |================================================| 100%
http://prdownloads.sourceforge.net/mingw/gcc-6.3.0-1-mingw32-info.tar.xz?download
504.67 kB / 504.67 kB   |================================================| 100%
http://prdownloads.sourceforge.net/mingw/gcc-6.3.0-1-mingw32-lang.tar.xz?download
1.27 MB / 1.27 MB       |================================================| 100%
install: gcc-6.3.0-1-mingw32-lic.tar.xz
mingw-get: *** ERROR *** package gcc-6.3.0-1-mingw32-lic.tar.xz is already installed
install: gcc-core-4.8.2-mingw32-dev.tar.meta
mingw-get: *** ERROR *** package gcc-core-4.8.2-mingw32-dev.tar.meta is already installed
install: libquadmath-6.3.0-1-mingw32-dll-0.tar.xz
 installing libquadmath-6.3.0-1-mingw32-dll-0.tar.xz
mingw-get: *** ERROR *** C:\MinGW\/bin/libquadmath-0.dll: extraction failed
mingw-get: *** ERROR *** C:\MinGW\/bin/libquadmath-0.dll: probable package conflict; existing file not overwritten
#省略部分内容
mingw-get: *** ERROR *** C:\MinGW\/lib/gcc/mingw32/6.3.0/libgomp.spec: probable package conflict; existing file not overwritten
install: gcc-core-4.8.1-4-mingw32-doc.tar.lzma
 installing gcc-core-4.8.1-4-mingw32-doc.tar.lzma
install: gcc-6.3.0-1-mingw32-man.tar.xz
 installing gcc-6.3.0-1-mingw32-man.tar.xz
install: gcc-6.3.0-1-mingw32-info.tar.xz
 installing gcc-6.3.0-1-mingw32-info.tar.xz
install: gcc-6.3.0-1-mingw32-lang.tar.xz
 installing gcc-6.3.0-1-mingw32-lang.tar.xz

4、确认组件是否安装成功。在C:\MinGW\bin目录下如有下面内容,则表示安装成功。

5、在Windows 平台的命令窗口中输入“gcc -v”,此时提示gcc不是内部命令。在当前用户(这里是XJH)的用户变量Path中,添加路径C:\MinGW\bin即可。

此时再输入“gcc -v”,则显示如下:

C:\Users\XJH>gcc -v
 specs
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/lto-wrapper.exe
mingw32
../src/gcc-6.3.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --with-gmp=/mingw --with-mpfr --with-mpc=/mingw --with-isl=/mingw --prefix=/mingw --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-6.3.0-1' --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --enable-libgomp --disable-libvtv --enable-nls
win32
gcc  6.3.0 (MinGW.org GCC-6.3.0-1)

C:\Users\XJH>

三、MinGW的使用

完成上面操作后,我们就可以在当前 Windows 平台上编译、运行 C 或者 C++ 程序了。

这里以运行一个 C 语言程序为例(假设存储路径为:C:\Users\XJH\Desktop\demo.c):

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("Hello, World!\n");
    system("pause");
    return 0;
}

在此基础上,在命令行窗口中执行如下指令:

Microsoft Windows [版本 10.0.22624.1680]
(c) Microsoft Corporation。保留所有权利。

C:\Users\XJH>cd C:\Users\XJH\Desktop\

C:\Users\XJH\Desktop>gcc demo.c -o demo

C:\Users\XJH\Desktop>

则会在C:\Users\XJH\Desktop\(即桌面)生成一个demo.exe 可执行文件。找到该文件并双击,即可看到程序的执行结果:

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

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

相关文章

React 状态管理 - Mobx 入门(上)

Mobx是另一款优秀的状态管理方案 【让我们未来多一种状态管理选型】 响应式状态管理工具 扩展学习资料 名称 链接 备注 mobx 文档 1. MobX 介绍 MobX 中文文档 mobx https://medium.com/Zwenza/how-to-persist-your-mobx-state-4b48b3834a41 英文 Mobx核心概念 M…

编译器优化等级对程序性能的影响

文章目录 前言代码示例性能差异探究原因附录 前言 GCC 有 -O0、-O1、-O2、-O3 四级优化等级&#xff0c;你知道它们对程序性能有多少影响吗&#xff1f;知道性能差异产生的根本原因是什么吗&#xff1f;今天就和大家一起研究下。 代码示例 combine4.c #include <stdio.h…

用什么工具来画UML?

2023年10月9日&#xff0c;周一晚上 目录 我的决定 关于rational rose UML工具有哪些 相关资料 我的决定 我决定用plantUML、draw.io或starUML就可以了 其实没必要在意工具&#xff0c; 重要的是能把图画出来、把图画好画规范&#xff0c; 重要的是知道怎么去画图、把意…

linux,write:xxx has messages disabled 与 Ubuntu多用户同时登录的问题 ubuntu 20.04

write&#xff1a;xxx has messages disabled 问题 被这问题折磨了好久&#xff0c;搜都搜不到&#xff0c;还是灵机一动想到的。 很多 帖子说&#xff0c;要使用 mesg y用了还是没有用&#xff0c;后面我登录了很多用户&#xff0c;发现只有root用户可以给别的用户使用write…

【深度学习实验】卷积神经网络(八):使用深度残差神经网络ResNet完成图片多分类任务

一、实验介绍 本实验实现了实现深度残差神经网络ResNet&#xff0c;并基于此完成图像分类任务。 残差网络&#xff08;ResNet&#xff09;是一种深度神经网络架构&#xff0c;用于解决深层网络训练过程中的梯度消失和梯度爆炸问题。通过引入残差连接&#xff08;residual conne…

java实验(头歌)-Java类和对象之访问限制

/** 任务&#xff1a;实现图书类&#xff0c;该类包含了图书的基本属性和信息。类名为&#xff1a;Book */ // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码 /********** Begin **********/ public class Book { // 定义四个私有变量 // 图书名称&#xff08;…

近期分享学习心得3

1、全屏组件封装 先看之前大屏端的监控部分全屏代码 整块全屏代码 常规流是下面这种 //进入全屏 function full(ele) {//if (ele.requestFullscreen) {// ele.requestFullscreen();//} else if (ele.mozRequestFullScreen) {// ele.mozRequestFullScreen();//} el…

黑马JVM总结(二十九)

&#xff08;1&#xff09;语法糖-重写桥接 &#xff08;2&#xff09;语法糖-匿名内部类 &#xff08;3&#xff09;类加载-加载 类加载可以分为3个阶段&#xff0c;加载、连接、初始化 我们知道java类编译成字节码以后&#xff0c;运行呢需要类加载器把类的字节码加载到方法…

行业追踪,2023-10-09

自动复盘 2023-10-09 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

Linux网络监控工具 - iftop

iftop 是一个基于 libpcap 库的网络流量监控工具。它通过监听指定网络接口上的数据包&#xff0c;并分析这些数据包的源地址、目标地址、源端口、目标端口、协议等信息&#xff0c;从而实时显示网络流量的相关统计信息。 安装 在大多数Linux发行版中&#xff0c;您可以使用包管…

设计模式学习(十一)责任链模式

目录 一、定义1.1 主要成员1.2 优点1.3 缺点 二、使用场景2.1 Spring Security 中的应用 三、代码示例3.1 实现思路3.2 实体类3.3 抽象处理者3.4 具体处理者1&#xff09;责任链容器2&#xff09;校验-用户名3&#xff09;校验-密码4&#xff09;校验-手机号 3.4 客户端&#x…

windows平台FairMOT的实现

环境&#xff1a;python3.6pytorch1.1.0torchvision0.3.0cuda9.2vs2015 该项目需要装3个c库&#xff08;dcn_v2&#xff0c;apex&#xff0c;cython_bbox&#xff09;特别坑&#xff0c;各种环境不匹配&#xff0c;各种bug。本人c小白&#xff0c;但是一路摸索总算成功了。下面…

【Redis学习1】Redis持久化机制详解

Redis持久化机制详解 一、Redis为什么需要持久化机制 Redis一般用作缓存&#xff0c;其数据存储在内存中&#xff0c;当Redis宕机后&#xff0c;内存中的数据将会丢失。因此使用缓存的时候&#xff0c;我们经常需要对内存中的数据进行持久化也就是将内存中的数据写入到硬盘中…

vscode ssh linux C++ 程序调试

vscode调试c++程序相比vs2022要复杂很多,vs2022可以"一键运行调试",vscode则需要自己配置。 ​vscode调试程序时,会在当前工作目录产生.vscode 目录, 该目录有两个重要文件launch.json和tasks.json, 下面介绍两种调试方法: 手动调试和自动调试。 手动调试 不管…

k8s安全机制

安全机制 一、机制说明二、认证&#xff08;Authentication&#xff09;HTTP Token 认证HTTP Base 认证HTTPS 证书认证&#xff08;最严格&#xff09; 三、鉴权&#xff08;Authorization&#xff09;角色角色绑定主体&#xff08;subject&#xff09;Role and ClusterRoleRol…

实现一个简单的线性回归和多项式回归(2)

对于多项式回归&#xff0c;可以同样使用前面线性回归中定义的LinearRegression算子、训练函数train、均方误差函数mean_squared_error&#xff0c;生成数据集create_toy_data,这里就不多做赘述咯~ 拟合的函数为 def sin(x):y torch.sin(2 * math.pi * x)return y1.数据集的建…

3、在 CentOS 8 系统上安装 PostgreSQL 15.4

PostgreSQL&#xff0c;作为一款备受欢迎的开源关系数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;已经存在了三十多年的历史。它提供了SQL语言支持&#xff0c;用于管理数据库和执行CRUD操作&#xff08;创建、读取、更新、删除&#xff09;。 由于其卓越的健壮性…

Linux网络监控工具 - nethogs

nethogs 是一个基于命令行的网络监控工具&#xff0c;用于实时监视每个进程的网络流量。它可以显示每个进程使用的带宽、连接数和数据包数量等信息。 安装 在大多数Linux发行版中&#xff0c;您可以使用包管理器来安装 nethogs。例如&#xff0c;在Ubuntu/Debian上&#xff0c…

【Java 进阶篇】CSS语法格式详解

在前端开发中&#xff0c;CSS&#xff08;层叠样式表&#xff09;用于控制网页的样式和布局。了解CSS的语法格式是学习如何设计和美化网页的关键。本文将深入解释CSS的语法格式&#xff0c;包括选择器、属性和值等基本概念&#xff0c;同时提供示例代码以帮助初学者更好地理解。…

【单片机】18-红外线遥控

一、红外遥控背景知识 1.人机界面 &#xff08;1&#xff09;当面操作&#xff1a;按键&#xff0c;旋转/触摸按键&#xff0c;触摸屏 &#xff08;2&#xff09;遥控操作&#xff1a;红外遥控&#xff0c;433M/2.4G无线通信【穿墙能力强】&#xff0c;蓝牙-WIFI-Zigbee-LoRa等…