为何我的开发环境缺少C++20头文件?应如何修复该问题?
问题根因
- 标准库版本过旧,未实现C++20对应的标准库特性:
- GCC 9的
libstdc++仅支持部分C20语法,完全没有实现<concepts>头文件、std::bit_width等C20新增的库组件,开启-std=c++2a参数只会启用编译器前端的语法支持,不会补充缺失的标准库实现 - 现有安装的
libc++版本为10,<concepts>等C++20库特性需要libc++ 11及以上版本才支持,因此使用Clang编译同样找不到对应头文件
- GCC 9的
- 可自定义concept是因为该特性属于编译器前端的语法支持,不依赖标准库头文件,和标准库提供的预定义concept、库函数是完全独立的两部分。
解决方案
方案1:升级GCC及对应libstdc++
Ubuntu 20.04可通过官方工具链PPA安装高版本GCC:
# 添加工具链源 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update # 安装GCC 11及对应标准库 sudo apt install gcc-11 g++-11
编译时指定使用g++11即可:
g++-11 -std=c++20 test.cpp
方案2:升级Clang及对应libc++
安装高版本Clang和配套的libc++:
# 安装Clang14及对应标准库 sudo apt install clang-14 libc++-14-dev libc++abi-14-dev
编译时指定使用libc++标准库即可:
clang++-14 -std=c++20 -stdlib=libc++ test.cpp
内容的提问来源于stack exchange,提问作者Apollys supports Monica
相关产品推荐
相关产品推荐

