由于在生产环境中需要使用python 中得一个包tensorflow在机器中导入包发现有以下报错
经过百度 需要升级glibc库。
如图所示此图为升级后得截图,正常应该指向是没升级前libc-2.12.so
然后我发现 在/bigdata/anaconda/lib 下面有 libc-2.17.so就考虑把libc-2.17.so拷贝到/lib64下面然后修改软连接
cd /usrlib64
rm libc.so.6
ln -s libc-2.17.so libc.so.6 然后悲剧就发生了 发现这里报错。。。我使用其他命令。。都报错。。。
赶紧百度
解决办法:
既然命令无法寻址到软连接,那么直接命令行给他就是了,网上看到了两种方法
1、ldconfig -l -v /lib64/libc-2.12.so
这里写的libc库必须是原来使用的而不是你更新过的
2、LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6LD_PRELOAD允许你定义在程序运行前优先加载的动态链接库,因此在使用ln前就加载了lib库,而不是等到使用ln时加载,这样就能临时使用命令了
不仅仅是ln,只要加了LD_PRELOAD=/lib64/libc-2.12.so,后面可以跟一切因为libc.so.6被删不能用的命令
。
我使用的是第二种方法
然后命令又能用了.
好了问题解决了 理解下原因
glibc库是很多命令操作得依赖库 如图
仅仅是iconv,基本上非系统命令都有这一条 libc.so.6 => /lib64/libc.so.6 ,因此libc.so.6至关重要,绝对不能删,不能改名,能不能覆盖就不知道了,想作死的可以试试
但是还是没有解决根本问题。 怎么解决呢? 老老实实得源码安装吧
解决办法: glibc-2.17下载地址:https://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz wget https://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz tar -xvf glibc-2.17.tar.gz cd glibc-2.17 mkdir build cd build ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin make && make install
同样经历的还有 https://www.cnblogs.com/weijing24/p/5890031.html 这位同学