升級 glic后,libc.so.6被刪除修復
報錯
ln: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
[root@static-resource bin]# ls /lib64/libc.so.6
/lib64/libc.so.6
[root@static-resource bin]# ls /lib64/libc.so.6 -l
lrwxrwxrwx 1 root root 12 Mar 5 2019 /lib64/libc.so.6 -> libc-2.12.so
[root@static-resource bin]# rm /lib64/libc.so.6
[root@static-resource bin]# ln -s /usr/local/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6
ln: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
[root@static-resource lib]# ls /lib64/libc.so.6
ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
[root@static-resource lib]# LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6
alsa cpp crda firmware
恢復 正常
GLIBC版本兼容問題
將另外一個版本的Glibc安裝在別的目錄,比如/usr/local/lib/glibc-xxxx,然后,在你執行程序的時候,為這個程序設置一個環境變量LD_LIBRARY_PATH,這里面包含所有的庫的路徑,但是,/usr/local/lib/glibc-xxxx路徑必須在/lib目錄的前面。
這樣做有一個前提,那就是你的程序所有直接或間接用到的glibc的動態庫,都只用舊版的。如果某個額外的動態庫用到了新版的glibc,它是找不到的。
PS:這個環境變量只給你這個程序設,千萬不要設成系統的默認環境變量。比如,你可以這樣運行程序:
命令行$ LD_LIBRARY_PATH=XXX:XXX:XX ./getpoint.cgi
(2) libc.so是GLIBC庫的動態鏈接庫,如果這個被刪除了,很多command是沒有辦法用的包括ls,ln,rm等命令。
因此如果你有一個其它的Libc.so或者不同版本的,可以使用下面的命令,表示運行當前命令使用
命令行提供的real libc作為鏈接庫。
LD_PRELOAD=<real libc> ln -s <real libc> libc.so.6
例如:
LD_PRELOAD=/lib/libc-2.12.so ln -s /lib/libc-2.12.so libc.so.6
參考其它: 系統環境:centos6 2、執行命令都是報錯:
3、重新建軟連接、恢復正常
4、原理說明 |