Ubuntu 下 C++ 版本管理
一 概念澄清
二 管理编译器工具链版本
gcc -v、g++ -v、ls /usr/bin/gcc* /usr/bin/g++*。sudo apt update && sudo apt install gcc-11 g++-11。sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt update && sudo apt install gcc-12 g++-12。sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 --slave /usr/bin/g++ g++ /usr/bin/g++-11 110
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 120 --slave /usr/bin/g++ g++ /usr/bin/g++-12 120
sudo update-alternatives --config gcc # 交互选择默认版本
sudo update-alternatives --config g++
gcc -v、g++ -v。如需移除某版本:sudo update-alternatives --remove gcc /usr/bin/gcc-11。/usr/bin/g++-12 -std=c++20 ...;或在 CMake 中设置工具链:cmake -DCMAKE_C_COMPILER=/usr/bin/gcc-12 -DCMAKE_CXX_COMPILER=/usr/bin/g++-12 ...
/usr/bin/gcc 与 /usr/bin/g++,风险较高,易与包管理器冲突,优先使用 update-alternatives。三 管理 C++ 标准与特性
g++ -std=c++20 -Wall -Wextra -O2 main.cpp -o app。set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF) # 禁用编译器扩展,获得更标准的语义
四 项目级与工程化实践
五 快速排错清单
gcc -v 报错或找不到命令:安装对应版本(如 sudo apt install gcc-11 g++-11),或检查是否被 update-alternatives 正确管理。update-alternatives 报 “g++ can’t be master/slave …”:确保 gcc/g++ 成对添加,使用 --slave 让 g++ 跟随 gcc 切换。-std= 目标;同时确认第三方依赖库与当前工具链兼容。