g++,gcc

news2024/11/14 15:12:37

由一个错误引发对这个问题的关注
在这里插入图片描述
上面我对于cpp文件利用gcc进行编译时产生的错误,起初我以为时三方库安装版本问题,反复卸载重装,发现仍然没有解决。然后我把目光聚焦到gcc编译这,发现把gcc改成g++,编译就通过了。
g++和 gcc属于GNU 编译器集合 (GNU Compiler Collection, GCC) ,用于编译不同的编程语言。g++ 主要用于编译 C++代码,而 gcc主要用于编译C代码。虽然它们都可以用来编译 C 和 C++ 代码,但在处理和链接方面有一些关键区别。
1.处理
gcc:
当 gcc 处理 C 代码时,它会根据 C 语言的规则优化代码,并应用 C 语言的特定编译选项。如果 gcc 被用于处理 C++ 代码,它不会自动启用某些 C++ 特有的编译选项(如 -lstdc++),这意味着编译的可执行文件可能缺少某些必要的链接步骤。
g++:
g++ 在处理 C++ 代码时,默认会启用与 C++ 相关的编译选项,例如自动链接 C++ 标准库、启用 C++ 特定的警告和优化等。它会确保所有 C++ 特性的正确处理,比如模板实例化、内联函数和异常的处理等。
3. 链接
gcc:
gcc 默认情况下不会自动链接 C++ 标准库(libstdc++),即使编译的是 C++ 代码。这意味着在链接阶段,如果代码中使用了 C++ 标准库的功能(如 std::vector、std::cout 等),必须手动添加链接选项:gcc -o output example.cpp -lstdc++
当 gcc 编译 C 代码时,它只会链接 C 标准库(libc),这是 C 语言项目所需的。
g++:
g++ 在链接阶段会自动链接 C++ 标准库。这意味着你不需要手动指定链接选项,即使代码中使用了 C++ 标准库的功能。g++ 还会处理 C++ 的全局构造函数和析构函数,这是 C++ 程序初始化和清理过程的一部分。
所以,遇到cpp文件编译尽量用g++避免一些不必要的错误。

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

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

相关文章

回归分析系列14.2— 正则化回归

16 正则化回归 16.1 简介 正则化回归是一种在回归模型中引入约束的技术,目的是防止模型过拟合并提高其泛化能力。最常见的正则化方法有岭回归(L2正则化)和套索回归(L1正则化)。这些方法通过添加惩罚项来限制模型参数的大小,从而降低模型的复杂度。 16.2 岭回归(L2正则…

OpenStack命令行发放云主机

source keystonerc_admin 查看环境变量 创建租户(项目) openstack project create hds 创建用户 openstack user create hds --password 1 --project hds 追加角色 openstack role add_member --user hds --project hds 创建规格 openstack flavor cr…

警惕.mkp勒索病毒:如何有效预防.mkp勒索病毒攻击

导言: 在数字化时代,网络安全问题日益严峻,勒索病毒作为一种极具破坏性的恶意病毒,严重威胁着个人用户和企业机构的数据安全。其中,.mkp勒索病毒以其强大的加密能力和广泛的传播方式,成为近期备受关注的网…

Linux 命令重定向介绍

今天给伙伴们分享一下Linux 命令重定向,希望看了有所收获。 我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步&…

Linux磁盘实用指令

目录 磁盘实用指令 磁盘实用指令 显示opt目录下的文件和目录 。 筛选出第一个符号为-的。 wc指令统计数目。 将符号-改为d就可以统计目录数目。 添加一个大写的r就可以递归的显示子目录了。 再与之前同理筛选出文件即可。 包括子文件夹的话加个大写的r即可 。 没有是因为默认情…

第2章-07-客户端IP与UserAgent

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲,后续完整更新内容如下。 文章…

WLAN基础概念与实验

目录 1.WLAN 1.1 WLAN 基本概念和用途 1.2 WLAN 的用途 2.实验基本信息 2.1 实验top 2.2 实验要求 3.实验配置 3.1 基础配置 3.1.1 Router 3.1.2 SW1 3.1.3 SW2 3.1.4 AC6605 3.2 上线配置(AC6605) 3.3无线的下发 3.3.1 配置用户认证方式…

论文翻译:Multi-step Jailbreaking Privacy Attacks on ChatGPT

Multi-step Jailbreaking Privacy Attacks on ChatGPT https://arxiv.org/pdf/2304.05197 多步骤越狱隐私攻击对ChatGPT的影响 文章目录 多步骤越狱隐私攻击对ChatGPT的影响摘要1 引言2 相关工作3 对ChatGPT的数据提取攻击3.1 数据收集3.2 攻击制定3.3 从ChatGPT中提取私人数据…

Day47 | 110.字符串接龙 105.有向图的完全可达性 106.岛屿的周长

110.字符串接龙 110. 字符串接龙 题目 题目描述 字典 strList 中从字符串 beginStr 和 endStr 的转换序列是一个按下述规格形成的序列: 1. 序列中第一个字符串是 beginStr。 2. 序列中最后一个字符串是 endStr。 3. 每次转换只能改变一个字符。 4. 转换过…

数据结构-时间、空间复杂度-详解

数据结构-时间复杂度-详解 1.前言1.1数据结构与算法1.2如何衡量一个算法的好坏1.3复杂度 2.时间复杂度2.1是什么2.2大O符号只保留最高阶项不带系数常数次为O(1) 2.3示例示例2.1示例2.2示例2.3示例2.4 2.4题目 3.空间复杂度3.1是什么3.2大O符号3.3示例示例1示例2示例3示例4 4.题…

用4种不同视角理解矩阵乘法

目录 1. 背景 2. 线性方程组视角(向量点积视角) 3. 列向量观点视角 4. 向量变换视角(矩阵函数) 5. 坐标变换视角 1. 背景 矩阵诞生于线性方程组的求解,最基本的运算方法来自于高斯消元法,所以矩阵整个…

一些问题的解决方案【持续更新ing】

一些问题的解决方案【持续更新ing】 WindowsCUDA 安装失败解决方案VS 添加现有项无反应无法定位程序输入点 于动态链接库 xxx.exe 上不同工具集生成的库无法通用更改只读属性 UbuntuVTK cmake 过程中找不到QT5目录Ubuntu添加环境变量(永久最简单)Wandb强…

书橱系统小程序的设计

管理员账户功能包括:系统首页,个人中心,图书信息管理,图书类型管理,电子书论坛,系统管理 微信端账号功能包括:系统首页,图书信息,电子书论坛,我的 开发系统…

SSRF实验

SSRF实验 SSRF概述实验测试结果 SSRF概述 SSRF服务端请求伪造,是因为网页提供的参数可以获取其他资源,接受网址在本地解析,来获取服务器本身的资源,但解析没过滤导致出现的问题 主要有几个方面的方法 dict 协议是一个在线网络字…

旅游社交小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,每日签到管理,景点推荐管理,景点分类管理,防疫查询管理,美食推荐管理,酒店推荐管理,周边推荐管理 微信端账…

C语言高手参考手册:网络编程高级话题与技术细节(续)

在前两篇文章中,我们介绍了基本的网络编程概念和一些高级话题。本文将继续深入探讨网络编程的高级话题和技术细节,包括更复杂的错误处理策略、高级I/O模型、高级多路复用技术、高级套接字选项、安全编程的最佳实践以及网络编程的调试技巧等。 1. 高级错…

探索数据结构:跳表的分析与实现

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 贝蒂的主页:Betty’s blog 1. 跳表的概念 **跳表(Skiplist)**是在有序链表基础上增加了“跳跃”功…

【数据存储】大/小端存储与字节顺序转换函数详解

学习目的是使用,网络编程中主机字节顺序与网络字节顺序转换这块就用到了这些概念及其函数! 【Linux网络编程入门】Day5_socket编程基础 文章目录: 大端存储与小端存储 1.1 低地址与高地址 1.2 数据的高位与低位 1.3 大端存储 1.3.1 定义 1.…

轻松打造一个可以切换AI平台的网站

亮色主题 暗色主题 停止按键 设置界面 浏览器缓存设置 Kimi 通义千问 ChatGPT 手机版 部分代码如下: # -*- coding: utf-8 -*- from flask import Flask, request, jsonify, render_template, Response import requests import json import os from gevent import p…

Go反射四讲---第二讲:反射与结构体,使用反射如何操纵结构体?

反射-结构体 这是我们反射四讲的第二讲,本次给大家讲解如何使用反射处理结构体。 使用反射如何输出结构体的字段名字和值,使用反射如何给结构体字段设置值。 为了确保反射输出所有的字段名字和值,关键在于一点只有 Kind Struct 的才有。 注意&#…