update-alternatives
管理GCC/G++版本update-alternatives
是CentOS系統自帶的版本管理工具,可方便地切換默認GCC/G++版本。
yum
安裝所需版本的GCC和G++(如GCC 7、8),例如:sudo yum install gcc-7 gcc-8 g++-7 g++-8
update-alternatives
:為每個版本注冊替代項(指定優先級,數值越大優先級越高):sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80 --slave /usr/bin/g++ g++ /usr/bin/g++-8
sudo update-alternatives --config gcc # 同時會自動切換關聯的G++版本
gcc --version # 查看當前默認GCC版本
g++ --version # 查看當前默認G++版本
SCL是CentOS/RHEL的官方多版本管理工具,可在同一系統中并行運行多個軟件版本,且不影響系統默認版本。
sudo yum install centos-release-scl
sudo yum install devtoolset-9-gcc devtoolset-9-gcc-c++
scl enable devtoolset-9 bash
~/.bashrc
文件中:source scl_source enable devtoolset-9
gcc --version # 查看當前GCC版本
pyenv
pyenv
原本用于管理Python版本,但通過插件也可管理GCC版本,適合需要統一管理多語言版本的用戶。
pyenv
:curl https://pyenv.run | bash
~/.bashrc
(或其他shell配置文件):export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
pyenv-virtualenv
插件(可選,用于隔離環境):git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
eval "$(pyenv virtualenv-init -)"
pyenv install 7.5.0
pyenv install 8.1.0
pyenv global 7.5.0
pyenv local 8.1.0
gcc --version # 查看當前GCC版本
cvm
(Cross Version Manager)專用工具cvm
是專門用于管理GCC版本的工具,支持快速切換和版本隔離。
cvm
:git clone https://github.com/ztane/cvm.git ~/.cvm
source ~/.cvm/scripts/cvm
cvm install gcc-7.5.0
cvm install gcc-8.1.0
cvm use gcc-7.5.0 # 臨時切換
~/.bashrc
):echo 'cvm use gcc-7.5.0 --default' >> ~/.bashrc
source ~/.bashrc
gcc --version
Docker通過容器技術實現完全隔離的C++編譯環境,適合需要避免污染主機系統的場景。
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
FROM centos:7
RUN yum update -y && \
yum install -y gcc gcc-c++ && \
yum clean all
CMD ["/bin/bash"]
docker build -t centos-gcc7 .
docker run -it centos-gcc7
gcc --version # 查看容器內GCC版本
若需要特定版本的GCC(如最新穩定版),可手動編譯安裝,適合對編譯選項有定制需求的場景。
sudo yum install gmp-devel mpfr-devel libmpc-devel
wget http://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.gz
tar -xf gcc-11.2.0.tar.gz
cd gcc-11.2.0
mkdir -p build && cd build
../configure --prefix=/usr/local/gcc-11.2.0 --enable-languages=c,c++ --disable-multilib
make -j$(nproc) # 使用多核編譯,加快進度
sudo make install
PATH
(添加到~/.bashrc
):echo 'export PATH=/usr/local/gcc-11.2.0/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
gcc --version # 查看當前GCC版本
以上方法覆蓋了從簡單到高級的C++版本管理需求,可根據實際場景選擇合適的方式。例如,日常開發推薦使用update-alternatives
或SCL;需要多語言版本管理選pyenv
;隔離性強選Docker;定制化需求選手動編譯。