Ubuntu系统下如何将默认C++标准库从std=c++14切换为std=c++17
操作方案
你可以根据自己的需求选择以下任意一种方案实现:
方案1:切换更高版本的gcc/g++为系统默认编译器
gcc 11及以上版本的默认C标准为C17,你可以先安装对应版本再设置为默认,操作步骤如下:
- 安装gcc-11、g++-11(如果不想用11版本,也可以继续用gcc-10,搭配方案2的参数配置)
sudo apt update sudo apt install gcc-11 g++-11
- 添加编译器可选配置
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 110
末尾的数值为优先级,数值越高优先级越高,保证高于你当前默认的旧版本编译器优先级即可。
- 如需手动切换版本,可执行以下命令按提示选择对应版本编号:
sudo update-alternatives --config gcc sudo update-alternatives --config g++
配置完成后,执行你之前的查询命令man g++ | grep "This is the default for C++ code"即可看到默认标准已经切换为C++17。
方案2:不修改默认编译器,设置全局编译参数
如果你不想改动系统默认的编译器版本,可以添加全局编译参数,让所有编译工具默认启用C++17标准:
- 临时生效(仅当前终端窗口有效):
export CXXFLAGS="$CXXFLAGS -std=c++17"
- 永久生效:
打开你当前使用的shell配置文件,bash用户编辑~/.bashrc,zsh用户编辑~/.zshrc,在文件末尾添加一行:
export CXXFLAGS="$CXXFLAGS -std=c++17"
保存后执行source ~/.bashrc(zsh用户执行source ~/.zshrc)即可生效。
注:两种方案都不需要手动修改系统默认的C++标准库版本,编译软件包时工具会自动匹配对应标准的标准库链接,完全满足依赖要求。
内容的提问来源于stack exchange,提问作者Mohammad Mohammadidoust
相关产品推荐
相关产品推荐

