【问题标题】:separate rpm version's of a glibc for a application in RHELRHEL 中应用程序的单独 rpm 版本的 glibc
【发布时间】:2016-11-25 06:27:04
【问题描述】:

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

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

【问题讨论】:

标签: java glibc rhel


【解决方案1】:

Red Hat 创建了一个选项,它是 RHEL 订阅的一部分,可以完全按照您的意愿去做 - 它被称为 Red Hat Developer Toolset。

https://developers.redhat.com/products/developertoolset/get-started-rhel6-cpp/

目前在 gcc 6,但 gcc 5 也可用。

它通过“与”原版“一起”安装新的 gcc 版本来工作,因此不会与操作系统产生冲突。

【讨论】:

    【解决方案2】:
    1. 没有。较新版本的 foo 将覆盖较旧版本的 foo。对于 glibc,这意味着您只有新版本。这将打破一切。 Red Hat 提供了一种叫做 Software Collections (SCL) 的东西,可以让您安装多个 RPM,这样它们就不会发生冲突,但 glibc 没有 SCL。

    2. 我建议不要在 RHEL 6 上使用 RHEL 7 的 glibc 版本。它可能会寻找 RHEL 6 上不可用的东西。也许您可以在 RHEL 6 上构建 RHEL 7 的 glibc(调整了适当的标志),把在自定义位置并明确链接?您仍然需要自己维护这个 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      • 2018-07-21
      • 2014-11-10
      • 1970-01-01
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多