我使用的是 Ubuntu 18.04.6 LTS,当我使用dpkg -l
命令时,结果包含以下条目:
ii gcc 4:7.4.0-1ubu amd64 GNU C compiler
ii gcc-7 7.5.0-3ubunt amd64 GNU C compiler
ii gcc-7-base:amd 7.5.0-3ubunt amd64 GCC, the GNU Compiler Collection
ii gcc-8-base:amd 8.4.0-1ubunt amd64 GCC, the GNU Compiler Collection
gcc
我想知道现在的版本是什么gcc-7
。
答案1
工具链包有很多,包括 gcc 套件、python 以及 Debian/Ubuntu 中的 llvm 套件,它们同时以不同的包名打包多个版本。
这样做的原因有多种,包括。
- 它提供了一个“逃生舱口”,如果新版本导致构建失败,可以将包的构建暂时恢复到以前的版本。这类事情对于需要自己构建的编译器特别有帮助。
- 它允许早期采用者包在切换整个发行版的默认设置之前测试和/或使用新版本。
- 它允许不同的语言前端和/或不同的架构在不同的时间切换版本。
有一个“默认”源包(gcc-defaults for gcc),它构建的包名称中没有版本号。发行版使用这些包来设置该工具的默认版本。
因此 gcc-7 软件包包含 gcc 版本 7.x。 gcc 包依赖于并包含 gcc 主要版本的符号链接,该版本是该特定版本的“默认”版本。
gcc-<version>-base 包含一些由 gcc 源包构建的所有包共享的文件。特别是这包括 libstdc++6。
libstdc++6 不使用“默认”系统,来自发行版中最新的 gcc-x 源包。即使该版本的 gcc 尚未成为默认版本。
看起来 18.04 将 gcc 7 作为默认 gcc 版本,但有来自 gcc-8 的 libstdc++,因此为什么同时安装了 gcc-7-base 和 gcc-8-base。
不幸的是,18.04 现已从packages.ubuntu.com 中删除,但回程机器上有相关页面的副本,显示默认的 gcc 是版本 7,但 libstdc++6 来自 gcc-8 源包。
http://web.archive.org/web/20230208173902/https://packages.ubuntu.com/bionic/gcc
http://web.archive.org/web/20220809174431/https://packages.ubuntu.com/bionic/libstdc%2B%2B6