【Linux】gcc/g++区别和联系

  • gcc/g++是什么
  • gcc/g++之间的区别和联系

gcc/g++是什么

讲到gcc/g++,那就得先说一下GCC,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/g++之间的区别和联系

实际使用中我们更习惯使用 gcc 指令编译 C 语言程序,用 g++ 指令编译 C++ 代码。但这并不是 gcc 和 g++ 的区别,gcc 指令也可以用来编译 C++ 程序,同样 g++ 指令也可以用于编译 C 语言程序(C++向下兼容C)。
那么,gcc 和 g++ 的区别是什么呢?
实际上,只要是 GCC 支持编译的程序代码,都可以使用 gcc 命令完成编译。可以认为gcc 是 GCC 编译器的通用编译指令,因为根据程序文件的后缀名,gcc 指令可以自行判断出当前程序所用编程语言的类别,比如:

xxx.c:默认以编译 C 语言程序的方式编译此文件;
xxx.cpp:默认以编译 C++ 程序的方式编译此文件。
xxx.m:默认以编译 Objective-C 程序的方式编译此文件;
xxx.go:默认以编译 Go 语言程序的方式编译此文件;

当然,gcc 指令也为用户提供了“手动指定代表编译方式”的接口,即使用 -x 选项比如:

gcc -xc xxx 表示以编译 C 语言代码的方式编译 xxx 文件;而 gcc -xc++ xxx 则表示以编译 C++ 代码的方式编译 xxx 文件(了解就行,平常很少用到)。

如果使用 g++ 指令,不管目标文件的后缀名是什么,该指令都会按照编译 C++ 代码的方式编译该文件。也就是说,对于 .c 文件,gcc 指令以 C 语言代码对待,而 g++ 指令会以 C++ 代码对待。但对于 .cpp 文件来说,gcc 和 g++ 都会以 C++ 代码的方式编译。

还需要注意:如果我们正确创建并编辑了一个test.c文件,输入命令 gcc test.c 那gcc编译器就会按照c语言的方式来编译该文件,并链接生成可执行文件。

在这里插入图片描述如果我们正确创建并编辑了一个test.cpp文件,输入命令gcc test.cpp 那gcc编译器会按照c++的方式来编译该文件按,但链接时不会自动和C++库进行连接。
在这里插入图片描述
但如果我们输入gcc -lstdc++ test.cpp就可以正常连接并生成可执行文件了。

在这里插入图片描述g++编译器则只会将文件按照C++的方式来进行编译并链接生成可执行文件。
在这里插入图片描述

通过上面我们可以知道,编译可以用 gcc 或 g++,而链接可以使用 gcc -lstdc++ 和 g++。
因为 gcc 命令不能自动和 C++ 库链接,所以通常使用 g++ 来完成链接。但在编译阶段,g++ 会自动调用 gcc,二者等价。

在编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++的库进行链接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像c++程序只能用g++似的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker私有仓库,仓库管理器

目录 1.简单私有仓库管理 1.概述 2.上传镜像到私有仓库 3.从私有仓库拉取镜像 2.基于Docker搭建Nexus构建Docker私服 1.下载nexus3的镜像 2.启动容器 3.登录管理平台创建Docker总库 4.创建Docker存储库 5.配置仓库Realms 6.Docker输入地址进行登录操作 1.简单私有仓…

【不同入参ajax请求】ajax请求接口入参form形式和body形式如何写前端代码(附源码详解)

目录1、什么是ajax1.1 ajax性质(异步jsxml)1.2 ajax请求方式(同步和异步):A.同步请求(不推荐)B.异步请求(默认)1.3 工作原理如下2、ajax入参请求形式2.1 ajax入参form形式…

Appium 自动化测试从入门到精通,零基础也能听懂

目录 1.Appium介绍 2.Appium基本原理 3.Appium安装配置 1.Appium介绍 1,appium是开源的移动端自动化测试框架; 2,appium可以测试原生的、混合的、以及移动端的web项目; 3,appium可以测试ios,android应用&…

掌握C语言的这3个函数,你就学会随机读写文件了

在上一篇博客中,我详细讲解了如何使用C语言顺序读写文件。所谓顺序读写,就是按照顺序,挨个挨个的读或者写,换句话说,我必须先读第一个,再读第二个,接着读第三个,以此类推&#xff0c…

二战华为成功上岸,准备了小半年,要个27k应该也算不上很高吧~

先说下我基本情况,本科不是计算机专业,现在是学通信,然后做图像处理,可能面试官看我不是科班出身没有问太多计算机相关的问题,因为第一次找工作,华为的游戏专场又是最早开始的,就投递了&#xf…

redis 三. hash应用场景及底层分析

Hash 类型一. 简单命令示例二. java 操作示例三. 使用场景四. 底层分析ziplist 压缩列表ziplist内部entry详解ziplist内存分配与连锁更新ziplist 小总结:hashtable 字典一. 简单命令示例 Hash 类型,可以简单理解为对应java的Map<String,Map<Object,object>>简单命…

PCIe基础

PCIe基础 PCI Express&#xff0c;简称PCI-E&#xff0c;官方简称PCIe&#xff0c;是计算机总线的一个重要分支&#xff0c;它沿用既有的PCI编程概念及信号标准&#xff0c;并且构建了更加高速的串行通信系统标准。目前这一标准由PCI-SIG组织制定和维护。 拓扑 配置空间 在 P…

Python图片相册批处理器的设计与实现批量添加图片水印、批量命名等功能

课题研究使用Python语言开发一个包含批量添加图片水印、批量命名等功能的图片批处理程序&#xff0c;功能模块大概包含以下模块&#xff1a; &#xff08;1&#xff09;首页模块&#xff1a;首页是整个软件的初始页面&#xff0c;包含用户登录、注册、关于本软件等功能&#xf…

order by是怎么工作的?

order by是怎么工作的&#xff1f; 在你开发应用的时候&#xff0c;一定会经常碰到需要根据指定的字段排序来显示结果的需求。还是以我们前面举例用过的市民表为例&#xff0c;假设你要查询城市是“杭州”的所有人名字&#xff0c;并且按照姓名排序返回前 1000 个人的姓名、年…

Java数据结构之基于ArrayList编写大众麻将和扑克牌洗牌小练习

目录 1.大众麻将洗牌小程序 1.1实现效果 1.2源码展示 2.扑克牌洗牌小程序 2.1实现效果 2.2源码展示 1.大众麻将洗牌小程序 大众麻将有3种牌色分别为万、条、筒。每种牌色有9张&#xff0c;如一万到九万。每种牌色有四张&#xff0c;因此万、条、筒*9*4一共108张。因此&a…

RXSwift在项目中实战总结: Subject, Driver, 高阶函数

1.Subject Subject 既攻也受&#xff0c;它既可以作为序列&#xff0c;又可以作为观察者。下面我们看一下既攻也守的原理&#xff1a; public protocol SubjectType : ObservableType {/// The type of the observer that represents this subject.////// Usually this type …

PyTorch 之 简介、相关软件框架、基本使用方法、tensor 的几种形状和 autograd 机制

文章目录一、PyTorch 简介二、PyTorch 软件框架1. Anaconda 下载2. Anaconda 安装3. Anaconda Navigator 打不开问题&#xff08;不适用所有&#xff09;4. PyTorch 环境创建5. PyTorch 下载6. Jupyter 中配置 PyTorch三、PyTorch 基本使用方法四、tensor 的几种形状1. Scalar&…

基于token的身份认证及自动续期的解决方案

目录前言传统方式下的身份认证token如何实现身份认证单token续期方案双token续期方案小结前言 B/S架构大家应该都不陌生&#xff0c;web1.0时代&#xff0c;用户通过个人电脑浏览网站&#xff0c;单项获取信息&#xff0c;比如我们浏览新闻&#xff0c;查阅资料等。web2.0很快就…

MySQL OCP888题解072-显示表的存储引擎的方法

文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3.1、知识点1&#xff1a;SHOW TABLE STATUS语句3.2、知识点2&#xff1a;INFORMATION_SCHEMA TABLES表3.3、知识点3&#xff1a;INFORMATION_SCHEMA ENGINES表4、总结1、原题 1.1、英文…

计算机网络第五章(运输层)【湖科大教书匠】

物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题&#xff0c;实现了主机到主机的通信 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程 如何为运行在不同主机上的应用进程提供直接的通信服务时运输层的任务&#xf…

Python 彩蛋 —— 开发人员留下的惊喜

Python 彩蛋 —— 开发人员留下的惊喜 简介&#xff1a;Python 核心程序开发人员在软件内部设计了2个彩蛋。一起来看看吧。 文章目录Python 彩蛋 —— 开发人员留下的惊喜&#x1f4a1;彩蛋一&#xff1a;Python 之禅&#x1f4a1;彩蛋二&#xff1a;Python 有趣的漫画&#x1…

在 Flutter 多人视频通话中实现虚拟背景、美颜与空间音效

前言 在之前的「基于声网 Flutter SDK 实现多人视频通话」里&#xff0c;我们通过 Flutter 声网 SDK 完美实现了跨平台和多人视频通话的效果&#xff0c;那么本篇我们将在之前例子的基础上进阶介绍一些常用的特效功能&#xff0c;包括虚拟背景、色彩增强、空间音频、基础变声…

【Java 数据结构与算法】-遍历Map和Set的方式

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【Java 数据结构与算法】 文章目录一、遍历Map法一 先获取Map集合的全部key的set集合&#xff0c;遍历map的key的Set集合法二 把map的key和value打包成Set的key后的这个Set集合法…

GitHub Copilot X:AI 协助编程的软件开发新时代来了!

生成式人工智能代表了软件开发的未来。GitHub 与 OpenAI 合作创建了 GitHub Copilot&#xff0c;这是世界上第一个使用 OpenAI Codex 模型开发的大规模生成式人工智能开发工具。 作为一款 AI 辅助编程工具&#xff0c;GitHub Copilot 开启了软件开发的新时代。通过自动补全注释…

低功耗技术——流水线设计(加法器和乘法器)

文章目录前言一、流水线1、16bit加法器2、无符号4bit乘法器3、编写一个4bit乘法器模块&#xff0c;并例化该乘法器求解c12*a5*b二、降低FPGA功耗1、静态功耗2、动态功耗前言 2023.3.31 今天学习降低功耗的一些方法 一、流水线 电路最高工作频率&#xff1a;取决于最长的组合逻…
最新文章