在CentOS 7上构建和使用更新的GLIBC

2exbekwf  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(234)

我使用CentOS 7,并希望使用一些需要GLIBC_2.18的Anaconda python软件包,而主机操作系统只提供2.17。我尝试在这些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包。谢谢!

ruyhziif

ruyhziif1#

试试./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

(or类似的东西)。

相关问题