Debian 和 Ubuntu 的大型软件包更新

作者:James Darvell

Debian 和 Ubuntu 正在更新所有 C++ 软件包,采用 4 月份发布的 GCC5。GCC 代表 Gnu 编译器集合,用于将源代码转换为可执行代码和库。 这些编译器用于构建从 Linux 内核到用户应用程序的所有内容,因此这是一个影响深远的更改。

GCC5 引入了比以前版本更多的根本性更新,因为它是第一个完全支持最新 C++ 版本的版本。 这个新标准于 2011 年发布,包含对 1998 年发布的以前标准的许多改进。 它为开发人员提供了构建更稳定的软件的工具,从而在 Linux 生态系统的各个层面提高了开发速度。

更新 C++ 软件包是一项重大项目,需要重新编译,因为新的标准 c++ 库 (libstdc++) 具有不同的二进制接口(ABI,或应用程序二进制接口)。 在许多情况下,还必须更改源代码以符合 C++11 标准。

升级软件包最终将带来更稳定的平台,因为 GCC5 和新的标准 C++ 库除了支持新标准之外,还带来了许多改进。 旧的 ABI 对某些 C++11 功能具有实验性支持。 新版本具有完全支持,但它与旧的 ABI 不向后兼容。

有趣的是,当使用特殊宏编译软件包时,libstdc++ 仍然支持旧的 ABI (C++98)。 但是,现在迁移到新的 ABI 比以后迁移更有意义。 下一个版本的 GCC 将完全删除对 C++98 ABI 的支持,因此必须在 GCC6 下线之前很久就进行更改。

每个软件包都必须在几个不同的架构上编译,以便它们可供所有用户使用。 正如预期的那样,在此过程中出现了一些错误,必须修复它们。 这是一个耗时的过程,但结果将是影响深远的。 许多用户已经安装了基于 Debian 或 Ubuntu 的发行版。

有数千个软件包需要更新,其中许多软件包具有复杂的依赖关系。 这项工作取决于开发人员社区的贡献,他们被要求首先处理基本的库和软件包。 这绝对是一个人多力量大的案例,因此鼓励任何具备所需技能的人加入!

您可以在 https://wiki.debian.org/GCC5 上了解更多信息,或者加入相关的邮件列表(debian-devel-announce 和 ubuntu-devel)。

加载 Disqus 评论