当前位置: 首页 > news >正文

Windows 安装 GCC

文章目录

  • GCC 是什么?
  • GCC 和 gcc 什么关系?
  • Windows 安装 GCC
    • 选型
    • 下载
    • 安装
    • 配置环境变量
    • 验证
  • 参考文献

GCC 是什么?

GCC(GNU Compiler Collection)是一个开源的编译器套件,由 GNU 项目开发和维护。

GNU 编译器套件包括 C、C++、Objective-C、Fortran、Ada、Go 和 D 语言的编译器,以及这些语言的库(libstdc++,…)。GCC 最初是作为 GNU 操作系统的编译器编写的,为了满足各种编程语言的需求,后来加入了其他语言的编译器和调试器,变成了如今的编译器套件。

GCC 和 gcc 什么关系?

gcc(GNU C Compiler)是由 GNU 开发的 C 语言编译器,用于编译 C 语言代码。

gcc 是 GCC 套件中众多编译器的一个,是 GCC 的组成部分。GCC 还包含其他语言的编译器,如 g++ 用于编译 C++ 代码,gfortran 用于编译 Fortran 代码等。这些工具共同构成了 GCC 套件,提供了广泛的编译能力和选项。

Windows 安装 GCC

有时,我们想在 Windows 使用 GCC 中的编译器和其他工具,比如使用 gcc 和 gdb 编译调试 C 代码,那么该如何安装呢?

选型

Windows 版的 GCC 有三个选择:

  • Cygwin
  • MinGW
  • mingw-w64

Cygwin、MinGW 和 mingw-w64 都是在 Windows 操作系统上运行的工具集,用于在 Windows 环境下进行开发和编译。

Cygwin 是一个在 Windows 上运行的开源项目,旨在提供类Unix环境的兼容性。它提供了一套 GNU 和 Open Source 工具,包括编译器(如 gcc)、shell、库等。通过 Cygwin,开发者可以在 Windows 上编译和运行许多 Unix 或 Linux 上的应用程序。Cygwin 提供了对 POSIX 系统调用和 Shell 环境的支持,并提供了一套基于 Cygwin 的 DLL(动态链接库)来实现与 Windows 系统的交互。

MinGW(Minimalist GNU for Windows)是一个轻量级的开发环境,旨在提供 GNU 工具链(如 gcc、g++ 等)在Windows上的运行。MinGW 提供了一组 Windows 本地 API 的头文件和库,使开发者能够使用标准的 GCC 编译器在 Windows 上编译和运行 C 和 C++ 代码。与 Cygwin 不同,MinGW 的目标是直接使用 Windows 本地 API,而不是提供类 Unix 环境的兼容性。

mingw-w64 是 MinGW 的一个分支,它专注于支持 64 位 Windows 系统。与传统的 MinGW 只支持 32 位编译器不同,mingw-w64 提供了 64 位的 Windows 编译器和开发工具。它支持使用 GCC 编译器生成 64 位 Windows 应用程序,并提供了对 Windows API 的头文件和库的支持。mingw-w64 项目也是开源的,旨在提供免费、开放的开发环境。

总之,Cygwin 提供了类 Unix 环境的兼容性,MinGW 和 mingw-w64 则提供了在 Windows 上使用 GCC 编译器进行 C 和 C++ 开发的工具集。其中,mingw-w64 专注于 64 位 Windows 系统的支持。开发者可以根据自己的需求选择适合的工具集来进行 Windows 平台上的开发。

目前,最常用的是 mingw-w64,本文将以 mingw-w64 为例来安装 GCC。

下载

安装软件,最好的下载地方便是官网。

我们在 GCC 官网可以找到不同平台版本的官方网站入口。

在这里插入图片描述

进入到二进制下载页面可以看到 Windows 平台的三个版本。
在这里插入图片描述
然后进入到 mingw-w64 项目的官网下载页面。

在这里插入图片描述

mingw-w64 项目提供了很多 Windows 平台的工具链和包,这里以 w64devkit 为例,安装 C 和 C++ 编译器。大家可以根据自己的需要选择对应的工具。

在这里插入图片描述
按照指引,去 Github 下载即可。

在这里插入图片描述

安装

将下载的 w64devkit 压缩包解压后,放到任意目录即可。我这里将其拷贝到 C:\Program Files\w64devkit

解压后 w64devkit,其目录如下:

在这里插入图片描述
在 bin 目录下,可以看到相关的编译器和 Linux 环境下常用的命令。

在这里插入图片描述

配置环境变量

要想在 Windows 命令行能够使用上述工具,需要将 w64devkit 的 bin 目录加入到环境变量 Path 中。

设置入口:开始 > 设置 > 系统 > 关于 > 高级系统设置 > 环境变量

将 w64devkit 的 bin 目录添加到用户变量或系统变量 Path,我这里加入到用户变量 Path 中。如果想对所有用户生效,需要加入到系统变量。

在这里插入图片描述

验证

打开命令行 Windows cmd 或 PowerShell,执行如下命令:

gcc --version
gcc.exe (GCC) 13.1.0
Copyright (C) 2023 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.

成功输出 gcc 版本信息,表示 GCC 安装成功。


参考文献

GNU Project
GCC, the GNU Compiler Collection - GNU Project
MinGW-w64

相关文章:

Windows 安装 GCC

文章目录 GCC 是什么?GCC 和 gcc 什么关系?Windows 安装 GCC选型下载安装配置环境变量验证 参考文献 GCC 是什么? GCC(GNU Compiler Collection)是一个开源的编译器套件,由 GNU 项目开发和维护。 GNU 编译…...

下载安装LabVIEW

下载安装LabVIEW 介绍下载安装流程下载安装 后续 介绍 LabVIEW 是 工程 师 用来 开发 自动 化 研究、 验证 和 生产 测试 系统 的 图形 化 编 程 环境。Labview作为图形化编程语言,图形控件拖拽式编程,显得更加直观形象,也很容易上手学习。 …...

从C语言到C++_14(vector的常用函数+相关选择题和OJ题)

目录 1. vector的常用函数 1.1 vector 的介绍 1.2 vector 的初始化 1.3 vector 的操作和遍历 1.4 vector 的容量和增删查改 2. vector 相关笔试题 3. vector 相关OJ题 136. 只出现一次的数字 - 力扣(LeetCode) 解析代码: 118. 杨辉…...

Java NIO-非阻塞I/O(二)

文章目录 1. SocketChannel2. ServerSocketChannel2. Channels类3. 异步通道(Java 7)4. Socket选项5. 就绪选择6. Selector类7. SelectionKey类 1. SocketChannel 通道将缓冲区的数据块移入或移出到个汇总给你I/O,如文件、Socket、数据报等。…...

PaaS平台iuap——数智底座支撑企业的全球化业务拓展

数智化转型是全球化企业非常关注的话题,数智化转型过程中suo 面临的问题与挑战也绝非一套简单的产品能够解决的,必须配合组织、人员、目标制度采用达成目标。iuap平台是整个企业数智化转型的底座,形象来说是我们的土壤,在这个土壤…...

RK3318 android12 HEVC-1080P 4K VP9等格式视频播放不了

同样视频在同样硬件在android10的固件刷机测试播放正常 在android12播放失败,在媒体中心点开视频直接闪退了 在android10 能播放4K视频, 我对比了ddr频率 cat /d/clk/clk_summary | grep ddr android10 clk_ddrmon 0 0 0 24000000 0 0 50000 pclk_ddr 3 3 0 61440000 0 0 5…...

gpt技术简介以及具体应用领域

GPT(Generative Pre-trained Transformer)是一种基于Transformer架构的生成式预训练模型。它是由OpenAI开发的一系列语言模型,其中最著名的是GPT-3。GPT模型通过在大规模文本数据上进行自监督预训练,学习了大量语言知识和语言模式…...

【java】leetcode 二叉树展开为链表

二叉树展开为链表 leetcode114 .二叉树展开为链表解题思路二叉树专题: leetcode114 .二叉树展开为链表 114 leetcode 链接。可以打开测试 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode &#x…...

windows环境, nginx https配置

在 Windows 环境下配置 Nginx 的 HTTPS,需要以下步骤: 1. 安装 OpenSSL 首先需要安装 OpenSSL,可以从官网下载 Windows 版本的 OpenSSL,然后解压到某个目录下,比如 C:\OpenSSL-Win64。 2. 生成 SSL 证书和私钥 使用…...

git 命令

初始化git目录 mkdir git-test cd git-test git init 配置git用户 git config --global user.name "yyuu007" git config --global user.email "12699891yyuu007user.noreply.gitee.com" 克隆远程代码 -b 指定分支 git clone -b dev gitgitee.com:y…...

【高分论文密码】大尺度空间模拟预测与数字制图

详情点击链接:【高分论文密码】大尺度空间模拟预测与数字制图一,R语言空间数据及数据挖掘 1、R语言空间数据 1.1R语言基础与数据科学 1.2R空间矢量数据 1.3R栅格数据2、R语言空间数据挖掘关键技术​​​​​​​二,R语言空间数据高级处理技…...

Word控件Aspose.Words教程:使用 C# 读取 SXC 和 FODS 文件

Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose支持流行文件格式处理,并允许…...

代码示范【FabEdge v0.8.0】配置 connector 公开端口

FabEdge项目简介: FabEdge是博云在2021年8月发起,基于Kubernetes 构建的专注于边缘计算场景的容器网络方案,支持 KubeEdge 、SuperEdge、OpenYurt 等主流边缘计算框架。旨在解决边缘计算场景下容器网络配置管理复杂、网络割裂互不通信、缺少…...

通过Python的PyPDF2库合并多个pdf文件

文章目录 前言一、PyPDF2库是什么?二、安装PyPDF2库三、查看PyPDF2库版本四、合并多个pdf文件1.引入库2.定义pdf路径3.获取所有要合并的PDF文件名4.创建一个新的PDF文件5.遍历所有PDF文件名6.打开PDF文件7.创建PDF阅读器对象8.遍历PDF中的每一页,并将它们…...

python基础 - python命名空间与作用域

命名空间是名称与对象之间的关系,可以将命名空间看做是字典,其中的键是名称,值是对象。 命名空间不共享名称。 在命名空间中的名称能将任何python对象作为值,在不同的命名空间中相同的名称可以与不同的对象相关联。但是&#xf…...

MapReduce实战案例(3)

案例三: MR实战之TOPN(自定义GroupingComparator) 项目准备 需求测试数据 有如下订单数据 订单id商品id成交金额Order_0000001Pdt_01222.8Order_0000001Pdt_0525.8Order_0000002Pdt_03522.8Order_0000002Pdt_04122.4Order_0000002Pdt_05722.4Order_0000003Pdt_01222.8 现在…...

Socket(三)

文章目录 1. 设置Socket选项2. TCP_NODELAY3. SO_LINGER4. SO_TIMEOUT5. SO_RCVBUF和SO_SNDBUF6. SO_KEEPALIVE7. OOBINLINE8. SO_REUSEADDR9. IP_TOS服务类型10. Socket异常 1. 设置Socket选项 Socket选项指定了Java Socket类所依赖的原生socket如何发送和接受数据&#xff0…...

【JVM】12. 垃圾回收相关概念

文章目录 12.1. System.gc()的理解12.2. 内存溢出与内存泄露内存溢出(OOM)内存泄漏(Memory Leak) 12.3. Stop The World12.4. 垃圾回收的并行与并发并发(Concurrent)并行(Parallel)并…...

Java 版 spring cloud 工程系统管理 工程项目管理系统源码 工程项目各模块及其功能点清单

工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…...

【Linux系统基础快速入门详解】Linux系统命令行介绍、命令提示符知识详解: ~/#/@等符号

Linux系统的命令行界面是Linux系统的核心部分,也是最常用的部分。在命令行界面中,用户可以使用各种Linux系统命令进行文件操作、系统管理、网络管理等操作。下面介绍一些常见的Linux系统命令行知识,以及命令提示符中的一些符号的含义。 1. 命令行界面 在Linux系统中,命令…...

XCTF-web-easyupload

试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

docker 部署发现spring.profiles.active 问题

报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

【C++进阶篇】智能指针

C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下&#xf…...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...