Windows中使用GCC介绍

2023-11-13

Windows中使用GCC介绍

GCC介绍

GCC是由许多组件组成的。GCC原名为GNU C语言编译器(GNU C Compiler),只能处理C语言。但其很快扩展,变得可处理C++,后来又扩展为能够支持更多编程语言,如Fortran、Pascal、Objective -C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器集合(GNU Compiler Collection)。

GCC一般运行环境为linux。GCC的Windows移植版本,比较出名的就是MinGW和TDM-GCC【它们本身没有Windows用户熟悉的GUI(图形用户界面窗口)】。

MinGW是指只用自由软件来生成纯粹的 Win32 可执行文件的编译环境,它是 Minimalist GNU on Windows (Windows上的极简GNU)的略称。开发 MinGW 是为了那些不喜欢工作在 Linux操作系统而留在 Windows 的人提供一套符合 GNU 的 GNU 工作环境。MinGW在SourceForge.net上的下载托管网页MinGW - Minimalist GNU for Windows download | SourceForge.net

TDM-GCC是基于MinGW或MinGW-w64(直观表现是TDM-GCC的安装目录中含有MinGW或MinGW-w64目录),在windows上很好用!TDM-GCC下载网页tdm-gcc

【谈到 GCC,就不得不提 GNU,“GNU”是“GNU's Not Unix!”(GNU并非Unix!)的首字母递归缩写,中文名“革奴计划”。GNU 计划的最终目标是打造出一套完全自由(即自由使用、自由更改、自由发布)、开源的操作系统,并初步将其命名为 GNU 操作系统。GNU 计划的实施可谓一波三折,最重要的一点是,虽然该计划为 GNU 操作系统量身定做了名为 Thr Hurd 的系统内核,但由于其性能比不上同时期诞生的 Linux 内核,最终 GNU 计划放弃 The Hurd 而选用 Linux 作为 GNU 操作系统的内核。在 Linux 内核的基础上,GNU 计划开发了很多系统部件,GCC 就是其中之一(除此之外,还有 Emacs 、GDB等非常实用的软件)。提示:开源、自由并不等于免费。】

注意:GCC与gcc,g++是不同的东西(区分大小写!):

GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等语言。

gcc是GCC中的GUN C Compiler(C 编译器)

g++是GCC中的GUN C++ Compiler(C++编译器)

【gcc-c++又叫做g++,g++默认语言设置为 C++,而且在连接的时候自动包含标准 C++ 库。

gcc和g++的主要区别:

1.对于 .c和.cpp文件,gcc分别当做c和cpp文件编译。

gcc 指令为用户提供了“手动指定代表编译方式”的接口,即使用 -x 选项。例如,gcc -xc xxx 表示以编译 C 语言代码的方式编译 xxx 文件;而 gcc -xc++ xxx 则表示以编译 C++ 代码的方式编译 xxx 文件。

2.对于 .c和.cpp文件,g++则统一当做cpp文件编译。

3.使用g++编译文件时,g++会自动链接标准库STL,而gcc不会自动链接STL;在用gcc编译c++文件时,为了能够使用STL,需要加参数 –lstdc++ 。

编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。但在编译阶段,g++会自动调用gcc,二者等价。因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了。】

对于 gcc 和 g++,初学者只要知道,对于 C 语言程序的编译,我们应该使用 gcc 指令,而编译 C++ 程序则推荐使用 g++ 指令,这就足够了。

Windows下如何gcc/g++编译器?

首先安装gcc/g++编译器,若之前是安装过Dev-C++、code::blocks之类的,这一步可省了。但可能需要将“Dev-Cpp安装路径\MinGW64\bin” 添加到Path环境变量中,Dev-Cpp安装路径部分应是你的Dev-Cpp实际安装路径,
我的Dev-Cpp安装路径是 C:\Program Files (x86)\Dev-Cpp
因此,将
C:\Program Files (x86)\Dev-Cpp\MinGW64\bin
添加到Path环境变量中

MinGW这个目录就是gcc移植到windows的结果。

MinGW是Minimalist GNU on Windows的略称。MinGW 是为了那些不喜欢工作在 Linux 操作系统而留在 Windows 的人提供一套符合 GNU 的 GNU 工作环境。

实际上 MinGW 并非一个 单纯的C/C++ 编译器,而是一套 GNU 工具集合,GCC是 MinGW 的核心所在。【若需要安装MinGW,详见 GCC编译器的安装教程(Windows环境)_nhyltt的博客-CSDN博客_gcc编译器安装

gcc可以编译c,g++可以编译c++;gdb可以用来调试。

在cmd中验证gcc是否正常执行

在cmd控制台窗体以下,输入gcc -v。若已经安装成功好,会显示gcc的版本号信息。

在cmd中验证g++是否正常执行

在cmd控制台窗体以下,输入g++ -v。若已经安装成功好,会显示g++的版本号信息。

在cmd中验证gdb是否正常执行

在cmd控制台窗体以下,输入gdb -v。若已经安装成功好,会显示gdb的版本号信息。

帮助选项--help,可以查看简要帮助

gcc --help

g++ --help

gdb --help

以g++ --help为例,查看g++简要使用帮助,如下图:

下面介绍 G++ 编译器的基本使用方法

使用g++编译运行C++程序

在D盘新建文件夹MinGwDemo中

用记事本建立一个test.cpp文件,内容如下:

#include <iostream>
using namespace std;
 
int main()
{
    cout << "你好,世界!" << endl; 
    cout << "Hello, world!" << endl; 
    return 0;
}

参见下图:

注意,保存时的设置:将默认编码UTF-8,修改为ANSI,防止g++编译后在CMD中运行中文显示乱码,若没改编码,也可用如下两法之一解决:

编译时加选项 -fexec-charset=GBK 也可以,如g++ test2.cpp -o test2 -fexec-charset=GBK

在cmd先输入运行 chcp 65001

【CHCP是一个计算机指令,能够显示或设置活动代码页编号。】

编译源文件使用

g++ 源文件名

g++ -o 可执行文件名 源文件名

前者,生成的默认源文件名a .exe,g++ test.cpp;后者可以指定可执行文件名(不要写扩展名.exe),如g++ test.cpp -o test,指定可执行文件名test .exe

打开cmd,切换路径到D:\MinGwDemo,再输入编译命令

参见下图

GCC入门 https://blog.csdn.net/monokai/article/details/122848340
GCC官方文档 https://gcc.gnu.org/onlinedocs/gcc/index.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows中使用GCC介绍 的相关文章

随机推荐

  • numa节点间CPU利用率不均衡 - wakeup affinity

    最近遇到服务器numa节点间cpu利用率不均衡 清除sched domain的flags中的AFFINE WAKEUPS标志位是一个优化方法 但是如果直接将AFFINE WAKEUPS关闭 将无法充分利用L2 L3 cache缓存命中带来的
  • JMeter软件的安装(超详细教程)

    JMeter软件的安装 超详细教程 1 jdk的安装 1 1jdk的环境变量配置 2 JMeter的安装 1 1JMeter的环境变量配置 3 JMeter的运行 第一个问题 为什么下载JMeter要先下载jdk 因为JMeter是Apac
  • 数据库还原-bak文件

    数据库还原 我知道有俩种方式 一种方式是直接在数据库上操作 一种是在数据库里用代码还原 第一种方法 1 数据库上右击 选择还原文件和文件组 2 选择目标数据库 选择bak文件 确定即可还原数据库 一般情况下这样就可以还原数据库了 但有时会报
  • nginx报错:./configure: error: C compiler cc is not found, gcc 是已经安装了的

    源码安装nginx报错 找不到gcc 但是实际上gcc是存在的 如下 configure checking for OS Linux 3 10 0 957 el7 x86 64 x86 64 checking for C compiler
  • GJB1188A校验C语言算法

    GJB1188A校验和算法 先将2个字节数据拼接为一个字 16字节 然后循环右移 之后模2算法合成 按位异或 就是 运算符 最后再反向移位 循环右移 消息队列中第一个字不移位 第二个右移1位 第三个右移2位 按位异或 相同为0 不同为1 消
  • rk3399 Android9.0 ota升级失败

    rk3399 Android9 0 ota升级失败 问题 在rk3399 Android9 0 项目中需要 ota 功能 user版本编译完ota升级包后 在同版本整包升级时遇到如下问题 抓到的logcat内容如下 1044 2343 D
  • 数据安全风险分析及应对策略研究

    报告从理论与实践层面对当前企业面临的内外部数据安全风险进行分析与研究 完成了以下几方面的探索 一是梳理了当前数据安全面临的突出问题 二是提出了数据安全体系建设的行动思路和关键举措 三是提出了数据安全建设发展建议 关注公众号 互联互通社区 回
  • angular自动化测试--protractor

    前戏 面向模型编程 测试驱动开发 先保障交互逻辑 再调整细节 by 雪狼 为什么要自动化测试 1 提高产出质量 2 减少重构时的痛 反正我最近重构多了 痛苦经历多了 3 便于新人接手 angular自动化测试主要分 端到端测试和单元测试 很
  • 专访戴文渊:第四范式(现在)是一家怎样的公司?

    李根 发自 凹非寺 量子位 报道 公众号 QbitAI 第四范式创始人及CEO戴文渊 第四范式是一家备受关注的公司 仅创始团队成员来看 哪一个不是计算机 机器学习领域响当当的名字 戴文渊是ACM2005全球冠军 百度机器学习系统带队打造者
  • RecyclerView中item布局的"match_parent"属性失效--LayoutInflate的深入了解

    用recyclerview 给item布局使用了match parent属性 运行后不起作用 查了下 是在onCreateViewHolder中加载布局时候出了问题 一开始用的View Inflate方法 查看源码后 发现View infl
  • Java学生个人信息录入

    编写 Java 程序显示学生的个人信息 定义类Student 该类中应该有三个私有属性 姓名 name 年龄 age 性别 sex 输入 第一行为一个数 表示录入学生个数 第二行依次为学生姓名 年龄 性别 最后一行输入一个学生的姓名 输出
  • 【selenium】python+selenium+unittest,关于每次执行完一个测试用例都关闭浏览器等时间较长的问题之解决方案...

    我一直在思考第一个博客应该写什么 然后我就解决了开通博客后解决的第一个问题 择题不如撞题 如果大多数人和我一样 接触python selenium unittest是从selenium IDE开始的话 你也一定会遇到这样的问题 我们写了5个
  • 论文阅读_大模型_ToolLLM

    英文名称 ToolLLM Facilitating Large Language Models to Master 16000 Real world APIs 中文名称 TOOLLLM 帮助大语言模型掌握16000多个真实世界的API 文章
  • telnet出现Connection closed by foreign host

    2018 10 26 执行命令 telnet smtp exmail qq com 465 出现信息 root pengman Desktop telnet 10 223 30 128 7027 Tring 10 223 30 128 70
  • 50 道 Java 基础编程练习题

    https gold xitu io post 58a4276f61ff4b006c899609
  • CMake 入门实战(精)

    http www hahack com codes cmake 从实例入手 讲解 CMake 的常见用法 Contents 什么是 CMake 入门案例 单个源文件 多个源文件 自定义编译选项 安装和测试 支持 gdb 添加环境检查 添加版
  • Java/JDK 21正式发布!15个特性一览

    订阅专栏 JDK 21已经于2023年9月19日正式发布 本文总结了JDK 21发布的新特性 发布版本说明 根据发布的规划 这次发布的 JDK 21 将是一个长期支持版 LTS 版 LTS 版每 2 年发布一个 上一次长期支持版是 21 年
  • s24服务器维护时长,服务器维护:艾锑人告诉您Mbps和mb/s换算知识

    影响我们一生百倍差距的四大效应 观察者效应 你的世界是什么样是由你的观察决定的 这个效应是在 潜能突破 研习营课堂上发现的 我们有个练习叫三生万物 每个人都会成为一次观察者角色 当大家在成为其他角色时 他们总是发现不了自己的问题 无论我们怎
  • 7.opencv——边缘检测( 拉普拉斯(Laplacian),Sobel,Canny边缘检测)

    边缘检测 边缘检测 拉普拉斯 Laplacian 边缘检测 Sobel边缘检测 Canny边缘检测 拉普拉斯 Laplacian Sobel Canny对比 边缘检测 qquad 各类图像中 由于不同物体对电磁波的反射特性不同 在物体与背景
  • Windows中使用GCC介绍

    Windows中使用GCC介绍 GCC介绍 GCC是由许多组件组成的 GCC原名为GNU C语言编译器 GNU C Compiler 只能处理C语言 但其很快扩展 变得可处理C 后来又扩展为能够支持更多编程语言 如Fortran Pasca