如何安装多个版本的glibc?

15

我在Ubuntu上安装了glibc 2.19版本。我还想在我的机器上安装2.3.4版本,使得所有程序默认使用2.19版本,只有特定程序使用2.3.4版。

我的问题是:

  1. 我该如何将2.3.4版本安装在指定位置(如/usr/glibc2.3.4)?
  2. 我该如何指定某个特定程序使用2.3.4版本?

3
请访问此链接:https://dev59.com/VHRA5IYBdhLWcg3wvQhh,可能会对您有帮助。 - Gaurav Dave
10
谁将此标记为“一般计算机帮助”需要重新阅读网站关于何为离题/主题的准则。这是在询问glibc - 一个编程库,这使得问题恰好落入主题之内。 - Qix - MONICA WAS MISTREATED
@GauravDave:感谢您的指引。在我发帖之前,我已经看过了您提到的帖子。它讲述了如何将exe与非默认版本的glibc链接起来。这部分回答了我的第二个问题,但并不完全,因为我有100个exe是通过那么多的makefile构建的。根据所提到的解决方案,我将不得不修改那么多的makefile以指定--rpath和--dynamic-linker选项。我想知道是否存在更好的解决方案。此外,第一个问题没有得到答复,即如何安装不同版本的glibc与默认版本共存。 - UnSat
我曾经尝试安装两个版本的glibc(确切地说,我试图将Ubuntu的较新版本glibc安装到我的CentOS上,而CentOS自带较低版本的glibc)。但是我没有成功。在我的情况下,我猜测在构建过程中更改了一些需要较新版本glibc的配置来解决问题。很抱歉,我忘记了具体情况。 - Chan Kim
2个回答

3
  1. 提取/opt内的第二个版本。
  2. 使用LD_LIBRARY_PATH先在/opt内查找库。

3
如果你只需要来自另一个版本的glibc的动态库,你可以简单地使用LD_LIBRARY_PATH。但是如果你想完全使用另一个版本,你需要针对另一个版本进行编译以获取静态组件。你可能还想编译另一个版本的glibc以获取所有硬编码路径,以便将其指向你的安装目录来加载数据文件和插件(对于NSS和gconv)。使用--prefix=/usr/glibc2.3.4也将把动态加载程序的soname设置为/usr/glibc2.3.4/lib/ld-linux.so.2(或者类似的东西,这取决于你的架构),这将被硬编码到每个链接到它的程序中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接