命令列gcc -v和g++ -v輸出版本不一致

这可就有点麻烦了發表於2024-09-27

命令列gcc -v和g++ -v輸出版本不一致


前言:本文初編輯於2024年1月30日

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

部落格園主頁:https://www.cnblogs.com/hassle


命令列gcc -v和g++ -v輸出版本不一致
讚美大萌神,神不允許報錯,這世上就沒有了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)的編譯器

相關文章