在选择 Linux 下 C++ 的“配置版本”时,通常可以从 编译器版本、C++ 标准、构建工具、系统环境 四个维度来考虑。下面给你一个实用、工程化的选择建议。
| 场景 | 推荐版本 |
|---|---|
| 生产环境 / 服务器 | GCC 11 / 12 |
| 新项目 / 现代 C++ | GCC 13 / 14 |
| 老系统兼容 | GCC 7 / 8 |
推荐理由
gcc --version
| 场景 | 推荐版本 |
|---|---|
| 静态分析 / 工具链 | Clang 15+ |
| 与 LLVM 生态结合 | Clang 17+ |
优点
| 标准 | 建议 |
|---|---|
| C++17 | ✅ 最稳妥、最通用 |
| C++20 | ✅ 新项目首选 |
| C++23 | ⚠️ 尝鲜,未必全支持 |
| C++14 | ❌ 老项目维护 |
GCC 12 + C++20
或
GCC 11 + C++17
| 发行版 | 建议 |
|---|---|
| Ubuntu 22.04 / 24.04 | ✅ 首选 |
| Debian 12 | ✅ 稳定 |
| Rocky / Alma / CentOS Stream | ✅ 企业级 |
| 工具 | 说明 |
|---|---|
| CMake | ✅ 事实标准 |
| Make | 老项目 |
| Bazel | 超大型项目 |
| Meson | 现代、简洁 |
CMake 推荐版本
CMake 3.20+
OS: Ubuntu 22.04 / 24.04
Compiler: GCC 12 / 13
C++ Standard: C++20
Build System: CMake 3.25+
OS: Rocky Linux 9
Compiler: GCC 11
C++ Standard: C++17
Build System: CMake 3.20+
gcc -v
sudo apt install gcc-12 g++-12
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
❌ 盲目追最新(GCC 14 + C++23)
❌ 在老系统强行用 C++20
❌ 编译器、标准、系统不匹配
你可以直接告诉我:
你的 Linux 版本 + 项目类型(服务端 / 嵌入式 / 高性能计算 / 学习)