保持与以前版本的二进制兼容性

Maintaining binary compatibility with previous versions

抱歉,如果这比 SO 更像是服务器故障,但它与编码有关,所以这里...

我有其他人的代码,我正尝试在 RHEL 7 上编译,但 运行(至少目前)在 RHEL 6 上。我已经编写了自己的 RPM 规范文件来构建和输出一个 RPM 文件。 RPM 在 RHEL 6 和 RHEL 7 上都可以正常构建,但是当我在 RHEL 7 上构建它时,由于 GLIBC 的版本不同,无法生成可以安装在 RHEL 6 上的 RPM。

是否有一个简单的开关我可以添加到某个地方的构建中,这将使生成的二进制文件满足早期版本的 GLIBC 并能够安装在 RHEL 6 上?

明确地说,我目前实际上不需要 RHEL 7 二进制文件,我只是希望能够在 RHEL 7 开发箱上针对 RHEL 6 进行编译。

您可以使用 mock(遗憾的是仅在 EPEL 中)在您的 Red Hat Enterprise Linux 7 系统上创建 Red Hat Enterprise Linux 6 chroot。如果您仅使用具有第 1 层 ABI 兼容性的库,您的应用程序将继续 运行 在 Red Hat Enterprise Linux 7 上,无需重新编译。建立在最老的受支持版本上(从应用程序的角度来看)确实是做到这一点的唯一方法。如果您需要更新的 C++ 编译器,这就是您在 Red Hat Enterprise Linux 7 上构建的原因,请考虑改用 Developer Toolset (DTS)。

Application Compatibility Guide 中描述了第 1 层库。应该有一个包含先前软件包列表的 PDF 附件,但我现在无法访问它。