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


前言:本文初编辑于2024年1月30日

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

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


赞美大萌神,神不允许报错,这世上就没有了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)的编译器

命令行gcc -v和g++ -v输出版本不一致的更多相关文章

  1. 命令行下查看python和numpy的版本和安装位置

    命令行下查看python和numpy的版本和安装位置 1.查看python版本 方法一: python -V 注意:‘-V‘中‘V’为大写字母,只有一个‘-’ 方法二: python --versio ...

  2. java从命令行接受多个数字求和输出

    一·设计思路 1.定义一个整型变量sum,用于接收和 2.利用循环将命令行数字求和 3.输出参数个数以及参数之和 二·流程图 三·程序源代码 public class JavaAppArguments ...

  3. Mac下通过命令行安装npm install -g 报错,如何解决?

    1, 使用 sudo npm install -g n2, 或者 sudo chmod -R 777 /usr/local/lib,然后 npm install -g

  4. WINDOWS 命令行调用SAS代码 并指定输出路径 示例

    ECHO "设置SAS.EXE 路径" SET PATH=D:\Program Files\SASHome\SASFoundation\9.4\SAS.EXE echo " ...

  5. mac下命令行安装node.js及切换不同版本nodejs

    摘自: http://www.cnblogs.com/ikuyka/p/5825762.html 前提是你电脑里已经装了node.js然后才能采用以下命令(以下代码最好不要同时运行) sudo n - ...

  6. [转] Java 命令行交互-JCommander

    [From] https://github.com/Sayi/sayi.github.com/issues/32 我喜欢简单,什么是简单?正如若干字符组成的命令行. 有时候我们用Java开发了一个小工 ...

  7. windows脚本(VBS)之cmd命令行的妙用

    windows脚本(VBS)之cmd命令行的妙用 (2009-08-06 13:40:55) 转载▼ 标签: 脚本 cmd 命令行 vbs js 简单 公式 windows it 分类: 计算机 脚本 ...

  8. optparse--强大的命令行参数处理包

    optparse,它功能强大,而且易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. optparse的简单示例: from optparse import OptionPa ...

  9. Wireshark命令行工具tshark

    Wireshark命令行工具tshark 1.目的 写这篇博客的目的主要是为了方便查阅,使用wireshark可以分析数据包,可以通过编辑过滤表达式来达到对数据的分析:但我的需求是,怎么样把Data部 ...

  10. windos命令行下的程序编写

    1.命令行下写程序. 写程序一定要用IDE?不,我还可以用记事本呢.呵呵,写程序一定要用记事本?? ———————————————— 命令行下输入copy con test.txt后回车可在相应目录下 ...

随机推荐

  1. 一文全懂:独立冗余磁盘阵列(RAID)

    独立冗余磁盘阵列,也就是大家常说的RAID,英文全称是:Redundant Array of Independent Disks,使用该技术,可以大幅提高硬盘设备的 IO 读写速度,还存在数种数据冗余 ...

  2. 垃圾回收器比较:CMS 和 G1

    前言 在查看系统内存监控的过程中,发现有几台机器的内存使用率一直很高,而且是呈现一个不太正常的高度,初始以为是 GC 不完全,也就是 JVM 内有大量对象不能回收,于是采用 Arthas 诊断查看一下 ...

  3. nacos:关于注册服务与配置管理

    为什么要用nacos做配置中心? 1.nacos可以做到统一管理,而且在修改时可以做到动态管理,无需重启即可生效. 2.nacos通过namespace进行环境隔离, 约定: namespace:用于 ...

  4. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-59 - 判断元素是否显示 - 上篇

    1.简介 有些页面元素的生命周期如同流星一闪,昙花一现.我们也不知道这个元素在没在页面中出现过,为了捕获这一美好瞬间,让其成为永恒.我们就来判断元素是否显示出现过. 在操作元素之前,可以先判断元素的状 ...

  5. 基于 TrueLicense 项目证书生成

    一.创建公钥私钥 1.首先要用 KeyTool 工具来生成私匙库:(-alias别名 -validity 3650 表示10年有效,这个时间不是License的过期时间) keytool -genke ...

  6. linux测试cpu性能的命令

    linux测试cpu性能的命令 在Linux中,可以使用多种命令来测试CPU性能.以下是一些常用的命令: stress: 一个通用的压力测试工具,可以生成CPU.内存.IO等负载. 安装: sudo ...

  7. 全球2023年自然科学指数(Nature Index),各单位排名表

    地址: https://www.nature.com/nature-index/annual-tables/2023/institution/all/all/global 自然科学指数(Nature ...

  8. TensorBoard标量图中的平滑曲线是如何做的平滑?—— tensorflow TensorBoard标量图中“平滑”参数背后的数学原理是什么?—— 指数移动平均(EMA)

    TensorFlow的tensorboard的平滑曲线的实现代码: 使用"指数移动平均"技术实现. 地址: https://github.com/tensorflow/tensor ...

  9. VSCode 如何将已编辑好的python文件中的 tab 键缩进转换成4个空格键缩进

    事情起源: 使用vscode维护一个7年前的python项目,发现编辑后运行报错,提示缩进错误,原因是当时的项目使用tab做缩进,而我正在用的vscode是使用4空格做缩进,因此造成了缩进不匹配的问题 ...

  10. tensorflow_probability.python.bijectors的一些使用

    网上见到一个TensorFlow的代码,没见过这个形式的,是概率编程的代码: # coding=utf-8 # Copyright 2020 The TF-Agents Authors. # # Li ...