ldconfig 引起的事故

算法同学想自己提升下主机的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


.........
一系列神鬼操作

最后
ldconfig 引起的事故

 


 

 

运维同学发现有程序调用 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

 

上一篇:c++程序生前死后


下一篇:jarvisoj_itemboard