gcc 和 gcc-X 之间的区别

gcc 和 gcc-X 之间的区别

我使用的是 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 套件,它们同时以不同的包名打包多个版本。

这样做的原因有多种,包括。

  1. 它提供了一个“逃生舱口”,如果新版本导致构建失败,可以将包的构建暂时恢复到以前的版本。这类事情对于需要自己构建的编译器特别有帮助。
  2. 它允许早期采用者包在切换整个发行版的默认设置之前测试和/或使用新版本。
  3. 它允许不同的语言前端和/或不同的架构在不同的时间切换版本。

有一个“默认”源包(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

相关内容