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版本
pyenvpyenv原本用于管理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;定制化需求选手动编译。