我正在尝试在运行 Red Hat 6.5 的计算机上运行程序。这会导致以下三个错误:
"/lib64/libc.so.6: version `GLIBC_2.14' not found"
"/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found"
"/lib64/libm.so.6: version `GLIBC_2.15' not found"
显然我必须安装这些库,但是在搜索时我只找到建议运行“sudo apt-get”的解决方案,遗憾的是我不能(没有 sudo 访问权限)。因此我需要一个无需 sudo 即可安装它们的解决方案。 (编辑:这个系统没有 apt-get,但我的印象是 yum,它确实有,与同样的东西相差不远。尽管仍然需要 root)。
此外,我希望该解决方案仅影响我的帐户,甚至仅限于我尝试运行的程序,这样我就不会影响该系统上的其他用户。
如果我能获得一些有关如何实现此类目标的帮助,我将不胜感激,或者如果不可能,我想知道这一点(出于好奇,也许还有原因)。
答案1
所以这里有两件事你需要知道:
- 如何获取图书馆
- 如何使用图书馆
获取图书馆
注意我对 yum 的熟悉程度不如 apt-get
您需要的库版本可能不适用于您的发行版。如果是这种情况,获取该库会更加棘手,并且可能需要您从源代码构建它。
如果有的话...
您已经看到了指向 apt-get 的说明。这是一个德班东西(包括 Ubuntu 和 Mint)。 Yum 是一个类似的工具,供亲戚使用。红帽(包括 Fedora 和 Centos)。 Yum 用于安装“RPM”,而 apt-get 安装 DPKG。
开始于:
使用图书馆
您可以将库放在您喜欢的任何目录中,然后使用环境变量LD_LIBRARY_PATH
引用该目录。
有一个障碍!据我所知,没有办法添加到默认的库路径,只需完全替换即可。与 不同PATH
,LD_LIBRARY_PATH
默认情况下不设置。因此,要设置它,您将需要您需要的每个库目录:
export LD_LIBRARY_PATH=/home/me/my-libs:/lib:/usr/lib: ... and the rest
如果您不知道需要哪些 lib 目录,那么您可以使用以下命令分析您的程序ldd
在设置环境变量之前。例如:
ldd /bin/bash
linux-vdso.so.1 (0x00007fff55394000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007fb13c31f000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb13c319000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb13c12f000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb13c480000)
可见bash需要/lib:/lib64
包含在内。
答案2
我敢打赌,您尝试运行的程序需要比您系统上当前安装的 GLIBC 版本更新的版本。不幸的是,因为它是 GLIBC,所以在没有 root 访问权限并且不影响整个系统的情况下无法获得更新的版本。检查该程序的上游站点,确保 RHEL 6 支持它。