抱歉,如果这更多是服务器故障,但它与编码有关,所以这里...
我正在尝试在 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/