你问“为什么 Ubuntu 的 C++ 版本旧”,通常可以从 系统定位、稳定性、软件源策略 这几个角度来看。下面用通俗一点的方式说明。
Ubuntu 是 面向服务器和生产环境的发行版,官方原则是:
能用、稳定、长期支持,比最新更重要
C++ 本身由 GCC / Clang 提供,而:
例如(大致情况):
这些在发布时已经是“足够新且稳定”的版本。
Ubuntu 里 成千上万的软件包 都是用同一个 GCC 编译的:
如果随便升级 GCC:
所以 系统级编译器不会频繁大版本升级。
很多人说“Ubuntu C++ 旧”,其实是指:
默认
g++版本低,不支持最新 C++ 特性
例如:
g++ --version
在老 Ubuntu 上可能是:
g++ (Ubuntu 9.4.0)
它 支持 C++17,但不完全支持 C++20。
sudo apt install g++-11 g++-12 g++-13
使用:
g++-13 main.cpp -std=c++20
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install g++-13
sudo apt install clang
clang++ main.cpp -std=c++20
Ubuntu 的 C++“旧”,是因为它优先稳定,而不是追新;但你随时可以装新编译器。
如果你愿意,可以告诉我:
我可以直接给你 最合适的升级方案。