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

标签 glibc rpmbuild rhel7 rhel6

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

我正在尝试在 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 上进行构建的原因,请考虑使用开发人员工具集 (DTS)。

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

关于glibc - 保持与以前版本的二进制兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47352872/

相关文章:

linux - 'etckeeper' 使用哪个用户名进行推送?

ubuntu - 如何在 Ubuntu 18.04 中安装 GLIBC 2.29 或更高版本

redhat - 如何使用文件的 SHA-256 校验和构建 rpm 包?

mysql - 无法连接到 *.*.*.* 上的 MySQL 服务器 (10060)

linux - "%{__install}"在 rpm 规范方面意味着什么?

c++ - rpmbuild check-rpath错误报告路径不是绝对路径

azure - 如何使用ansible循环挂载多个磁盘

linux - "arm-linux-gcc"和 "sim-panalyzer"导致的奇怪错误位于glibc函数 "dl_aux_init"

linux - 单个主机上的多个 glibc 库

linux - 使用 glibc 而不是默认库 : Permission denied on execution 编译的 C 程序