为什么 gcc 或 build-essential 没有在 Ubuntu 18.04 LTS 上安装最新版本的 GCC(截至今天为 9)?

为什么 gcc 或 build-essential 没有在 Ubuntu 18.04 LTS 上安装最新版本的 GCC(截至今天为 9)?

这背后的原因是什么?

谢谢!

答案1

在任何给定的 Ubuntu 版本上,build-essential通过声明对各种其他软件包的依赖关系,提供为该版本构建软件包最常用的工具。

其中两个软件包build-essential始终依赖于 和gccg++在每个版本中,这些软件包都会提供该版本默认版本的 GNU 编译器集合(部分),该版本通常用于编译该版本的程序。具体来说,它是用于构建 Ubuntu 官方存储库中提供的所有二进制软件包的版本。换句话说,它是用于构建该 Ubuntu 版本的版本

其他人指出为什么 Ubuntu 发布故意不提供最新版本的软件。 虽然稳定版本更新政策适用于提供开发工具的软件包,但这并没有真正回答为什么build-essential不总是依赖于最新的工具,因为build-essential通常甚至不依赖于最新的工具正式发布

例如,在我写这篇文章的时候,Ubuntu 的最新稳定版本是 19.04。(它不是 LTS 版本,但它是一个稳定版本。)gccg++依赖的软件包在build-essentialUbuntu 19.04 上提供 GCC 8.3。但是,GCC 9.1 已打包在 Ubuntu 19.04 的官方存储库中;它由名称以 结尾的软件包提供-9。具体来说,对于 GCC 9.1 而不是 GCC 8.3,您需要安装gcc-9包而不是gcc包和g++-9包而不是g++软件包。(你不必安装一个版本反而另一个;gccgcc-9,以及g++g++-9,可以同时安装而不会发生冲突。)

确实,稳定版本更新策略是 Ubuntu 18.04 LTS 没有 GCC 9 的原因。但这并不是 、 和 软件包为您提供旧版本 GCC(用于构建系统可用的二进制软件包的版本)的原因build-essentialgccg++在 18.04 LTS 中,该版本恰好是 GCC 7.2观点目的build-essential是为您提供推荐和正式使用的工具,用于构建软件包你的发布gcc,和包的目的是提供用于此目的g++的 GCC 组件,包括gcc和命令。g++

因此,即使 Ubuntu 官方提供的 GCC 版本比构建系统时使用的版本更高,那些包裹提供早期版本。

相关内容