我正在构建一个二进制文件 FOO
在 Centos 7 上(使用 glibc 2.14
),我希望它在 Centos 6 上运行(只有 glibc 2.12
)
如果我安装glibc 2.14
在 Centos 6 系统上并行:
https://unix.stackexchange.com/questions/176489/how-to-update-glibc-to-2-14-in-centos-6-5#299665
那么我需要做什么才能运行FOO
并使用glibc 2.14
.so 库?
是否设置LD_LIBRARY_PATH
帮忙?
最佳答案
最简单的方法可能是从 EPEL 安装 mock
并在 CentOS 6 chroot 中构建。这假设您已经将软件打包为 RPM 包。
理论上可以将 glibc RPM 解压到一个新的目录树(不是 /
)中,并以使用这些文件而不是系统 glibc 的方式运行编译器和链接器。然而,我不认为 CentOS 7 工具链是用 sysroot 支持构建的,所以这有点棘手。您可以从源代码构建 glibc 并查看它使用的编译器和链接器调用,因为它有同样的问题(像 localedef
这样的程序需要针对刚刚构建的 glibc 进行编译,而不是已经安装的程序)。
关于cross-compiling - 在 Centos 7 上交叉编译 Centos 6 系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45123251/