算法同学想自己提升下主机的glibc版本,区别运维同学使用container的方式来解决环境问题。他们直接做以下操作
wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz tar zxvf glibc-2.28.tar.gz cd glibc-2.28 mkdir build cd build ../configure --prefix=/opt/glibc-2.18
.........
一系列神鬼操作
最后
运维同学发现有程序调用 libstdc++.so.6 时报错
: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by /lib64/libstdc++.so.6)
直接重新修改软连接后 执行ldconfig命令。 引起系统崩溃
仔细看过后想起来,之前是想升级把libc.so.6指到了libc-2.17.so,导致了系统故障,这次libc.so.6指到哪个动态库呢?(动态库知识),这次在rescue模式修复libc.so.6的链接时,它指向了libc-2.17.so.确实是和之前一样的问题. 在这个博客中提到ldconfig为在命令行中说明的目录或文件/etc/ld.so.config中指定的目录或一些可信任的目录(象/usr/lib, /lib)中的最新的动态连接库创建必要的连接和绶存。这些绶存起来的数据会被动态连接器ld.so 或 ld-linux.so所使用。ldconfig会检查它所遇到的动态库文件的名称与版本号,以决定那些动态库的连接要进行更新。
解决方案:
mv 高版本的 libstdc++.so.6 文件到。/tmp下 重新 ldconfig