为RHEL中的应用程序分离glibc的rpm版本

时间:2016-11-25 06:27:04

标签: java glibc rhel

我正在编写一个使用不同glibc版本的应用程序。较低版本的rpm已安装在我的RHEL(6.5)盒子中,但我需要更高版本的glibc rpm,可在RHEL(7.x)中使用。

  
      
  1. 是否可以在RHEL中安装不同版本的相同rpm
  2.   
  3. 如果是,如何通过提供绝对路径在单个应用程序中使用不同版本的rpm,或者我可以安装更高版本的rpm   版本在一个单独的文件夹中并使用它?
  4.   
ie) /opt/higherverison/glibc <file>
    /usr/bin/glibc <file>

2 个答案:

答案 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)

  1. 没有。较新版本的foo会覆盖较早版本的foo。对于glibc,这意味着你只有新版本。这将打破一切。 Red Hat提供了一个称为软件集合(SCL)的东西,它允许你安装多个RPM,这样它们就不会发生冲突,但glibc没有SCL。

  2. 我建议不要在RHEL 6上使用RHEL 7的glibc版本。它可能会寻找RHEL 6上没有的东西。也许你可以构建RHEL 7的glibc(适当的)在RHEL 6上调整了标志,放入自定义位置并明确链接?你仍然需要自己维护这个glibc版本。您可以使用RPATH使应用程序使用不同的libc。

  3. 如何设置自定义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