我正在编写一个使用不同glibc版本的应用程序。较低版本的rpm已安装在我的RHEL(6.5)盒子中,但我需要更高版本的glibc rpm,可在RHEL(7.x)中使用。
- 是否可以在RHEL中安装不同版本的相同rpm
- 如果是,如何通过提供绝对路径在单个应用程序中使用不同版本的rpm,或者我可以安装更高版本的rpm 版本在一个单独的文件夹中并使用它?
醇>
ie) /opt/higherverison/glibc <file>
/usr/bin/glibc <file>
答案 0 :(得分:1)
Red Hat已经创建了一个选项,它是RHEL订阅的一部分,可以完全按照您的需要进行操作 - 它被称为Red Hat Developer Toolset。
https://developers.redhat.com/products/developertoolset/get-started-rhel6-cpp/
目前在gcc 6,但gcc 5也可用。
它的工作原理是将“gcc”版本与原版一起“安装”,这样就不会与操作系统产生冲突。
答案 1 :(得分:0)
没有。较新版本的foo
会覆盖较早版本的foo
。对于glibc,这意味着你只有新版本。这将打破一切。 Red Hat提供了一个称为软件集合(SCL)的东西,它允许你安装多个RPM,这样它们就不会发生冲突,但glibc没有SCL。
我建议不要在RHEL 6上使用RHEL 7的glibc版本。它可能会寻找RHEL 6上没有的东西。也许你可以构建RHEL 7的glibc(适当的)在RHEL 6上调整了标志,放入自定义位置并明确链接?你仍然需要自己维护这个glibc版本。您可以使用RPATH使应用程序使用不同的libc。
如何设置自定义RPATH? This answer有一种可能的方法:
RPATH指定提供的库所在的位置。该文件夹应包含:libc.so.6,libdl.so.2,libgcc_s.so.1等等。检查strace以找出二进制文件使用的库。
ld.so是提供的链接器
gcc -Xlinker -rpath = / default / path / to / libraries -Xlinker -I / default / path / to / libraries / ld.so program.c