1. 更新系统
首先,确保系统是最新的,避免因旧包导致的兼容性问题。
sudo yum update -y
2. 安装开发工具
直接安装开发工具组,里面包含了GCC和G++等基础编译工具。
sudo yum groupinstall "Development Tools" -y
3. 检查当前GCC版本
用两个命令快速确认系统里已经装了什么版本:
gcc --version
g++ --version
4. 安装多个GCC版本
如果项目需要特定的GCC版本,比如老项目依赖GCC 4.8,新项目需要GCC 11,那就要同时管理多个版本。这里有两种主流方案。
方案一:使用Software Collections (SCL)
SCL的好处是安装隔离,不影响系统默认的GCC,按需启用。以安装GCC 9为例:
sudo yum install centos-release-scl
sudo yum install devtoolset-9-gcc devtoolset-9-gcc-c++
scl enable devtoolset-9 bash
启用后,用gcc --version和g++ --version验证版本。退出当前shell后变回系统默认版本,非常灵活。
方案二:手动编译安装
如果SCL里没有你要的版本,或需要更精细的控制,从源代码编译也很直接。以GCC 11.2.0为例:
wget https://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 build && cd build
../configure --prefix=/opt/gcc-11.2.0 --enable-languages=c,c++
make -j$(nproc)
sudo make install
编译完成后,通过环境变量切换使用新版本:
export PATH=/opt/gcc-11.2.0/bin:$PATH
export LD_LIBRARY_PATH=/opt/gcc-11.2.0/lib64:$LD_LIBRARY_PATH
把这两行加到~/.bashrc里,就能永久生效。
5. 在项目中指定编译器版本
有了多个GCC版本,怎么让项目用上特定版本?两种常见构建系统都支持。
- Makefile:直接指定编译器的完整路径或别名。
CXX = g++-9
- CMake:在
CMakeLists.txt中设置。
set(CMAKE_CXX_COMPILER g++-9)
注意:如果切换了GCC版本,最好先make clean再重新编译,避免因旧的目标文件导致奇怪的问题。
6. 代码版本控制(Git)
以上是编译器版本管理,如果还需要对代码本身做版本控制,Git是最常用的工具。
sudo yum install git -y
进入项目目录,初始化仓库:
git init
添加所有文件并提交:
git add .
git commit -m "Initial commit"
之后就可以用git branch、git checkout等命令管理不同开发分支了。
总结一下,CentOS上配置C++版本控制,核心就是两步:一是学会用SCL或源码编译安装多个GCC版本,二是在项目中通过构建系统指定编译器。配合Git做代码版本管理,整个开发环境就清晰了。记得每次切换GCC版本后,务必重新编译项目,否则可能链接到错误的库,浪费时间排查。