事情经过:yum安装polkit-0.112-26.el7_9.1.x86_64工具,yum源用的和本地服务器不是一个版本yum安装完,会导致系统内核改变:

/lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib64/libstdc++.so.6)

正文:

系统centos6

用户root

(如果有按照百度教程升级GLIBC_2.14 or GLIBC_2.XX)的同学请先走第一步、第二步,没有安装高版本的GLIBC的同学直接进行第三部;

我们的目的是修改回原始的动态库;

第一步:确认动态库是否被修改

[root@tj-gongsi-quku lib64]# ll |grep libc.so.6
lrwxrwxrwx  1 root root      13 Sep 29 11:38 libc.so.6 -> libc.so.6_bak
lrwxrwxrwx  1 root root      12 Jun 21 09:09 libc.so.6_bak -> libc-2.17.so
[root@tj-gongsi-quku lib64]# ll |grep libc-
-rwxr-xr-x  1 root root 1926800 Jun 21 11:56 libc-2.12.so
-rwxr-xr-x  1 root root 1926800 Jun 21 11:57 libc-2.18.so
lrwxrwxrwx  1 root root      12 Jun 21 09:09 libc.so.6_bak -> libc-2.18.so
此时的libc.so.6链接到了libc-2.18.so

正常情况下:

[root@tj-vm119-qa-webapp lib64]# ll |grep libc
-rwxr-xr-x. 1 root root 1924768 Jun 20 11:37 libc-2.12.so
lrwxrwxrwx. 1 root root      18 Jul  3 17:46 libcap-ng.so.0 -> libcap-ng.so.0.0.0
-rwxr-xr-x. 1 root root   18672 Jun 25  2011 libcap-ng.so.0.0.0
lrwxrwxrwx. 1 root root      14 Jul  3 17:45 libcap.so.2 -> libcap.so.2.16
-rwxr-xr-x. 1 root root   16600 Dec  8  2011 libcap.so.2.16
-rwxr-xr-x. 1 root root  201632 Jun 20 11:37 libcidn-2.12.so
lrwxrwxrwx. 1 root root      15 Jul  6 19:41 libcidn.so.1 -> libcidn-2.12.so
lrwxrwxrwx. 1 root root      17 Jul  6 19:42 libcom_err.so.2 -> libcom_err.so.2.1
-rwxr-xr-x. 1 root root   14664 Mar 23  2017 libcom_err.so.2.1
-rwxr-xr-x. 1 root root   40872 Jun 20 11:37 libcrypt-2.12.so
lrwxrwxrwx. 1 root root      22 Jul  3 17:46 libcryptsetup.so.1 -> libcryptsetup.so.1.1.0
-rwxr-xr-x. 1 root root   94312 Jun 22  2012 libcryptsetup.so.1.1.0
lrwxrwxrwx. 1 root root      16 Jul  6 19:41 libcrypt.so.1 -> libcrypt-2.12.so
lrwxrwxrwx. 1 root root      12 Jul  6 19:41 libc.so.6 -> libc-2.12.so

和默认版本不一样的

原因是因为之前安装教程修改了环境导致的,我现在把动态库软连接改回来;

第二步:还原libc.so.6

rm -rf libc.so.6 #删除软连接,这步执行完成后所有命令无法使用,不必惊慌这里删除的是软连接,原文件还在

可以执行sln /lib64/libc-2.12.so /lib64/libc.so.6

此时确认动态库,发现已经还原了

[root@tj-gongsi-quku lib64]# ll |grep libc-
-rwxr-xr-x  1 root root 1926800 Jun 21 11:56 libc-2.12.so
-rwxr-xr-x  1 root root 1926800 Jun 21 11:57 libc-2.18.so
lrwxrwxrwx  1 root root      19 Sep 29 16:46 libc.so.6 -> /lib64/libc-2.12.so

但是此时问题依然存在
/lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib64/libstdc++.so.6)
 

第三步:cd /usr/lib64下

ll ibstdc++.so.6
确认libstdc++.so.6链接的目标文件

[work@tj-gongsi-quku lib64]$ ll |grep libstdc++.so.6
lrwxrwxrwx   1 root         root       30 Sep 29 16:53 libstdc++.so.6 -> /usr/lib64/libstdc++.so.6.bak

lrwxrwxrwx   1 root         root       19 Jun 21 09:09 libstdc++.so.6.bak -> libstdc++.so.6.0.19

正常情况下

[work@tj-gongsi-quku lib64]$ ll |grep libstdc++.so.6
lrwxrwxrwx   1 root         root       30 Sep 29 16:53 libstdc++.so.6 -> /usr/lib64/libstdc++.so.6.0.13

也就是说默认的c++动态库被改了,那么改回来

这里直接删除不用担心命令用了,因为linux是c写的~

rm -rf libstdc++.so.6 

ln -s /usr/lib64/libstdc++.so.6.0.13 libstdc++.so.6

再查看一下

[work@tj-gongsi-quku lib64]$ ll |grep libstdc++.so.6
lrwxrwxrwx   1 root         root       30 Sep 29 16:53 libstdc++.so.6 -> /usr/lib64/libstdc++.so.6.0.13
-rwxr-xr-x   1 root         root   987096 Mar 22  2017 libstdc++.so.6.0.13
-rwxr-xr-x   1 root         root  6431548 Dec 16  2016 libstdc++.so.6.0.19
lrwxrwxrwx   1 root         root       19 Jun 21 09:09 libstdc++.so.6.bak -> libstdc++.so.6.0.19

这样就完成了

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐