命令行gcc -v和g++ -v输出版本不一致

命令行gcc -v和g++ -v输出版本不一致


前言:本文初编辑于2024年9月27日

CSDN主页:https://blog.csdn.net/rvdgdsva

博客园主页:https://www.cnblogs.com/hassle

博客园本文链接:https://www.cnblogs.com/hassle/p/18435916


赞美大萌神,神不允许报错,这世上就没有了bug

本人错误描述:conda环境里面有一个默认环境base和一个创建的环境your_env_name,base里面安装的是gcc7.5和g++7.5,创建环境里装的是gcc14和g++14。而虚拟环境里面命令gcc -v和g++ -v输出版本不一致

在虚拟环境里,运行下面的代码,显示gcc版本为14.0

(your_env_name) XiaoMing@LAPTOP:~$ gcc -v

//结果
gcc version 14.1.0 (conda-forge gcc 14.1.0-1)

运行下面的代码,显示g++版本为7.5

(your_env_name) XiaoMing@LAPTOP:~$ g++ -v

//结果
gcc version 7.5.0 (Ubuntu 7.5.0-6ubuntu2)

原因

去找找报错信息看到了这个

COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/home/XiaoMing/miniconda3/envs/your_env_name/bin/
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper

系统中同时存在两个不同的GCC编译器安装:一个是由Miniconda3环境your_env_name提供的GCC 14.1.0版本,另一个是系统自带的GCC 7版本。 gcc -v 命令显示的是Miniconda3环境your_env_name中配置的GCC编译器信息,而 g++ -v 命令显示的是系统默认的g++编译器信息。

gcc -v 输出中的 Target: x86_64-conda-linux-gnu 指明了Miniconda环境中的编译器目标架构,而 g++ -v 输出中的 Target: x86_64-linux-gnu 指明了系统默认编译器的目标架构。 这说明Miniconda环境中的GCC编译器与系统默认的g++编译器是不同的。

造成这种差异的原因可能是你的系统环境变量PATH的设置导致shell优先搜索Miniconda环境中的gcc,而g++则仍然指向系统默认的编译器。 或者,系统可能同时安装了多个版本的GCC编译器,而gccg++的符号链接指向了不同的版本。

处理

打开终端,输入以下命令查看当前的PATH环境变量:

echo $PATH

这将输出一个以冒号 (:) 分隔的目录列表。 这些目录是shell搜索可执行文件的路径。

在输出的PATH中,找到Miniconda环境yuanbin目录路径 (例如 /home/XiaoMing/miniconda3/envs/your_env_name/bin) 和系统默认GCC编译器的路径 (例如 /usr/bin/usr/local/bin)。

找到你的shell配置文件。 这通常是~/.bashrc (bash shell), ~/.zshrc (zsh shell), 或其他类似的文件。 使用文本编辑器打开该文件 (例如 nano ~/.bashrcvim ~/.bashrc),不过我更推荐使用nano ~/.bashrc。 在文件中找到PATH变量的定义行,并修改其顺序,将系统默认GCC路径放在Miniconda路径之前。 例如,如果你的PATH定义如下:

export PATH="/home/youmu/miniconda3/envs/yuan/bin:$PATH"

修改为:

export PATH="/usr/bin:/home/youmu/miniconda3/envs/yuan/bin:$PATH"  # 或其他包含系统GCC路径的路径

此步骤旨在调整PATH环境变量的顺序,使系统在搜索gcc命令时,优先查找系统默认路径下的gcc,而不是Miniconda环境中的gcc

保存并关闭文件。 然后运行以下命令使更改生效:

source ~/.bashrc  # 或 source ~/.zshrc 等

重新运行 gcc -vg++ -v 命令,查看输出是否已更改。

不出意外的话,你的虚拟环境中的gcc将从指向了Miniconda环境中(your_env_name)的编译器变成指向了系统默认(base)的编译器

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

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

相关文章

Java ERP管理系统源码解析:微服务架构实践Spring Cloud Alibaba与Spring Boot

在当今数字化浪潮的推动下,企业对于高效、稳定且易于扩展的管理系统需求日益增长。为了满足这一需求,我们精心打造了一款基于Java技术的鸿鹄ERP(Enterprise Resource Planning)管理系统。该系统充分利用了Spring Cloud Alibaba、S…

局域网广域网,IP地址和端口号,TCP/IP 4层协议,协议的封装和分用

前言 在古老的年代,如果我们要实现两台机器进行数据传输, A员工就得去B员工的办公电脑传数据(B休息,等A传完),这样就很浪费时间 所以能不能不去B的工位的同时,还能传数据。这时候网络通信就出来…

一文彻底掌握inout双向端口

inout端口信号在FPGA中应用还是很广泛的,特别是一些总线通信、数据交互的场景,比如i2c、spi等等。 一、inout的基本概念 Inout 端口的实现基础是三态门。 三态门具有三种输出状态,即高电平、低电平以及高阻态(Z)。 …

K8S:开源容器编排平台,助力高效稳定的容器化应用管理

云计算de小白 Kubernetes(简称K8s)是一个开源容器编排平台,用于自动化部署、扩展和管理容器化应用程序。 K8S诞生于Google,基于其多年在生产环境运行容器的经验,目前已成为现代微服务架构和云原生应用的核心技术。 图…

Leetcode 707. 设计链表

1.题目基本信息 1.1.题目描述 你可以选择使用单链表或者双链表,设计并实现自己的链表。 单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。 如果是双向链表,则还需要属性…

代码随想录冲冲冲 Day58 图论Part9

47. 参加科学大会(第六期模拟笔试) 根据昨天的dijkstra进行堆优化 使用的原因是点多但边少 所以直接对于边进行操作 1.对于priority_queue来说 这是最小堆, 小于的话就是最大堆 之后由于是根据边来说的 所以新建一个Edge并且初始化一下 之后由于使用…

数字孪生赋能BMS:开启电池管理新纪元

这几天,全世界的媒体几乎都在报道黎巴嫩爆炸案。原本此类地缘冲突的影响力是较为有限的,但是这次的事件不太一样:这次爆炸的,是几千个传呼机。 这一事件迅速引发了全球范围内对于电子设备安全性的广泛关注:随着社会日…

[EBPF] 实时捕获DM数据库是否存在SQL阻塞

1. 介绍 eBPF(extened Berkeley Packet Filter)是一种内核技术,它允许开发人员在不修改内核代码的情况下运行特定的功能。eBPF 的概念源自于 Berkeley Packet Filter(BPF),后者是由贝尔实验室开发的一种网…

如何选择数据库架构

选择合适的数据库架构是一个复杂的过程,它取决于多种因素,包括应用程序的需求、数据量的大小、并发访问量、数据一致性要求、预算以及技术团队的熟悉程度等。以下是一些关键的步骤和考虑因素,帮助你选择合适的数据库架构: 1. 分析…

JavaScript对象方法

对象方法 已经讨论过hasOwnProperty(),propertyIsEnumerable()和isPrototypeOf()三个方法。 以及静态函数,Object.create(),Object.getPrototypeOf()等。 toString()方法 无参数,返回一个表示调用这个方法的对象值的字符串。默认返回信息很少&#x…

基因组学的未来:DAP-seq技术如何塑造

在生物科学的探索之旅中,我们一直在寻找更高效、更精确的方法来揭示基因的秘密。今天,我们自豪地介绍一种革命性的技术——DAP-Seq,它正在改变我们对基因表达调控的理解。 什么是DAP-Seq? DAP-Seq,即DNA亲和纯化测序技…

DataWhale x南瓜书学习笔记 task04笔记

线性判别分析(LDA) 前提假设:各类样本的协方差矩阵相同且满秩LDA的思想:1.设法让训练样例集投影到一条直线上,2.同类样例的投影点尽可能接近,异类样例的投影点尽可能远离,3.在对新样本进行分类时…

C++语法—引用

引用变量 概念 简单理解就是对一个已存在的变量起别名,与那个已存在的变量共用一块内存空间。 用法:已存在变量的类型 & 引用变量名 (引用实体)已存在变量 int main() {int a 1;int& b a;return 0; }在上面这个示例…

Lab1:虚拟机kolla安装部署openstack,并创建实例

实验内容: 创建并配置虚拟机安装OpenStack创建镜像创建实例类型选择网络配置创建实例 1、选择一个适合你的系统的虚拟机管理软件: VirtualBox (推荐) VMWare 其他 2、下载 .iso 镜像文件 openstack S 版本 iso 链接&#xff1…

计算机视觉实战项目4(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)

往期热门项目回顾: 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 AI健身教练-引体向上-俯卧撑计数…

网站设计中安全方面都需要有哪些考虑

网站设计中的安全性是一个多方面的问题,需要从多个角度进行考虑和实施。以下是一些关键的安全考虑因素: 数据加密: 使用SSL(安全套接字层)证书来建立加密连接,确保数据在传输过程中不被截获。定期更新SSL证…

保障电气安全的电气火灾监控系统主要组成有哪些?

电气火灾是什么? 电气火灾一般是指由于电气线路、用电设备、器具以及供配电设备出现故障性释放的热能:如高温、电弧、电火花以及非故障性释放的能量;如电热器具的炽热表面,在具备燃烧条件下引燃本体或其他可燃物而造成的火灾&…

动态规划入门题目->使用最小费用爬楼梯

1.题目: 2.解析: 做题模式: 步骤一:找状态转移方程 步骤二:初始化 步三:填表 步骤四:返回-> dp[n] dp[i]表示到达 i 位置最小花费 逻辑:要爬到楼顶先找到 i 位置 , 要…

如何在谷歌浏览器上玩大型多人在线游戏

在如今的数字时代,谷歌浏览器已经成为了许多人上网冲浪的首选工具。除了浏览网页、观看视频之外,你还可以在谷歌浏览器上畅玩各种大型多人在线游戏。本文将为你详细介绍如何在谷歌浏览器上玩大型多人在线游戏的步骤。 (本文由https://chrome…

PTH原理 补丁+工具

顺着《域渗透攻防指南》4.9的总结记录下。 0x00 PTH简单说明 PTH在内网渗透中用于横向移动。由于NTLM && Kerberos都是采用用户密码的NTLM Hash,所以我们不需要非得拿用户明文口令,拿到hash一样可以。 拿到hash后,可以撞hash&…