这背后的原因是什么?
谢谢!
答案1
在任何给定的 Ubuntu 版本上,build-essential
通过声明对各种其他软件包的依赖关系,提供为该版本构建软件包最常用的工具。
其中两个软件包build-essential
始终依赖于 和gcc
。g++
在每个版本中,这些软件包都会提供该版本默认版本的 GNU 编译器集合(部分),该版本通常用于编译该版本的程序。具体来说,它是用于构建 Ubuntu 官方存储库中提供的所有二进制软件包的版本。换句话说,它是用于构建该 Ubuntu 版本的版本。
其他人指出为什么 Ubuntu 发布故意不提供最新版本的软件。 虽然稳定版本更新政策做适用于提供开发工具的软件包,但这并没有真正回答为什么build-essential
不总是依赖于最新的工具,因为build-essential
通常甚至不依赖于最新的工具是正式发布。
例如,在我写这篇文章的时候,Ubuntu 的最新稳定版本是 19.04。(它不是 LTS 版本,但它是一个稳定版本。)gcc
和g++
依赖的软件包在build-essential
Ubuntu 19.04 上提供 GCC 8.3。但是,GCC 9.1 已打包在 Ubuntu 19.04 的官方存储库中;它由名称以 结尾的软件包提供-9
。具体来说,对于 GCC 9.1 而不是 GCC 8.3,您需要安装gcc-9
包而不是gcc
包和g++-9
包而不是g++
软件包。(你不必安装一个版本反而另一个;gcc
和gcc-9
,以及g++
和g++-9
,可以同时安装而不会发生冲突。)
确实,稳定版本更新策略是 Ubuntu 18.04 LTS 没有 GCC 9 的原因。但这并不是 、 和 软件包为您提供旧版本 GCC(用于构建系统可用的二进制软件包的版本)的原因build-essential
。gcc
(g++
在 18.04 LTS 中,该版本恰好是 GCC 7.2。这观点目的build-essential
是为您提供推荐和正式使用的工具,用于构建软件包你的发布gcc
,和包的目的是提供用于此目的g++
的 GCC 组件,包括gcc
和命令。g++
因此,即使 Ubuntu 官方提供的 GCC 版本比构建系统时使用的版本更高,那些包裹提供早期版本。