【问题标题】:Building and using a newer GLIBC on CentOS 7在 CentOS 7 上构建和使用更新的 GLIBC
【发布时间】:2021-10-12 03:21:12
【问题描述】:

我使用 CentOS 7 并想使用一些需要 GLIBC_2.18 而主机操作系统仅提供 2.17 的 Anaconda python 包。我尝试按照这些instructions 自己编译更新版本的 glibc。当我尝试使用这个较新的 glibc 运行任何可执行文件时,我收到一个错误:

$ ./testrun.sh ls
ls: error while loading shared libraries: ls: cannot open shared object file: No such file or director

这个问题有解决办法吗?

更新 1:

根据answer 中的建议,我需要指定可执行文件的完整路径,这会给出不同的错误消息:

$ cd glibc-2.20/build # build directory
$ ./testrun.sh /bin/ls
/bin/ls: error while loading shared libraries: libselinux.so.1: cannot open shared object file: No such file or directory

更新 2:

testrun.sh 中添加系统库的路径解决了这个问题。我不仅可以运行ls,还可以运行前面提到的python包。谢谢!

【问题讨论】:

  • 你应该重建python包,而不是重建新的glibc。
  • 谢谢,我之前确实尝试过构建这个包,但它有很多依赖项,有一次它失败了,我无法继续。所以我想尝试一个更简单的解决方案。
  • 使用其他发行版或该软件包的旧版本。否则你会发现自己陷入了痛苦的世界。
  • 我很想使用 Ubuntu/Debian,但不幸的是我被他们在工作中使用的 CentOS 卡住了。

标签: linux centos glibc


【解决方案1】:

试试./testrun.sh /bin/ls

也就是说,您最好为您的系统构建 Python 包,而不是像 Danila Vershinin 建议的那样尝试制作非系统 GLIBC。

更新:

libselinux.so.1: ...: No such file or directory

新 GLIBC 的 testrun.sh 不在系统目录中查找(例如 /usr/lib64)。您需要将系统目录追加到它使用的--library-path。例如。改变

--library-path "${builddir}":"${builddir}"/math:"${builddir}"/elf:"${builddir}"/dlfcn:"${builddir}"/nss:"${builddir}"/nis:"${builddir}"/rt:"${builddir}"/resolv:"${builddir}"/mathvec:"${builddir}"/support:"${builddir}"/crypt:"${builddir}"/nptl

到:

--library-path "${builddir}":"${builddir}"/math:"${builddir}"/elf:"${builddir}"/dlfcn:"${builddir}"/nss:"${builddir}"/nis:"${builddir}"/rt:"${builddir}"/resolv:"${builddir}"/mathvec:"${builddir}"/support:"${builddir}"/crypt:"${builddir}"/nptl:/usr/lib64:/lib64

(或类似的东西)。

【讨论】:

  • @SimpleMan 这很难相信。您可以编辑问题以显示您键入的 exact 命令行和该命令产生的 exact 错误吗?另外,我假设/bin/ls 是您实际使用的ls
  • 谢谢!我编辑了问题,运行/bin/ls 确实更改了错误消息,现在它抱怨找不到libselinux.so.1
  • @SimpleMan 请不要删除您的部分问题(就目前而言,这个答案没有意义)。附加到它(就像我所做的那样)。
  • 你太棒了,这已经解决了问题,我终于可以运行我一直想要的python包了!另外感谢有关如何使用本网站的提示,我更新了原始问题以保留讨论的时间线。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 2016-02-03
相关资源
最近更新 更多