在CentOS 7上编译使用高版本GLIBC解决Anaconda包依赖问题
CentOS 7 自定义编译高版本GLIBC运行报错解决方案
场景说明
- 宿主机为CentOS 7系统,默认自带GLIBC版本为2.17
- 需运行要求GLIBC 2.18及以上版本的Anaconda Python包,因此自行编译了更高版本的GLIBC
报错及排查过程
报错1:找不到可执行文件
运行命令:
$ ./testrun.sh ls
报错信息:
ls: error while loading shared libraries: ls: cannot open shared object file: No such file or director
- 修复方式:指定可执行文件的完整路径,而非仅写命令名
报错2:找不到系统依赖库
调整为完整路径后运行命令:
$ cd glibc-2.20/build # 进入glibc编译目录 $ ./testrun.sh /bin/ls
报错信息:
/bin/ls: error while loading shared libraries: libselinux.so.1: cannot open shared object file: No such file or directory
- 问题根因:自定义GLIBC配套的
testrun.sh脚本中仅配置了新编译的GLIBC库路径,未包含系统原生库路径,导致程序依赖的系统基础库无法被加载
最终解决方案
修改testrun.sh脚本,在LD_LIBRARY_PATH环境变量配置中追加系统原生库路径(通常为/lib64、/usr/lib64),保证自定义高版本GLIBC优先加载的同时,系统依赖库也能正常被检索到。
调整后即可正常运行ls等系统命令,也可正常使用依赖高版本GLIBC的Python包。
内容的提问来源于stack exchange,提问作者SimpleMan
相关产品推荐
相关产品推荐

