您好,登錄后才能下訂單哦!
/usr/lib/libc.so.6是glibc的軟鏈接,不同的平臺可能路徑會不一樣。
使用命令查看會看到:
[root@farmer:~]$ls -l /lib/libc.so.6
lrwxrwxrwx 1 root root 11 Jan 1 22:23 /lib/libc.so.6 -> libc-2.9.so
glibc是gnu發布的libc庫,即c運行庫。glibc是linux系統中最底層的api,幾乎其它任何運行庫都會依賴于glibc,所以說絕大部分操作命令都缺少不了它。
如何誤刪了libc.so.6,大部分系統命令將無法執行,ssh登錄系統也不成功,只會無休止的提示以下錯誤:
error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
這種情況下,大部分命令已經不能執行了,只能執行例如cd,echo等小部分命令,而實用的cp,mv則不可用
經過各種百度,得到解決方法(而此種方法的前提是ssh還沒斷開,如果ssh已斷開則無法重新連接上,得使用另外的方法用光盤重啟進入急救模式):
在同版本系統上查看/lib/libc.so.6得知是屬于libc-2.9.so的軟鏈接,因此,libc-2.9.so文件肯定還是存在的,誤刪的只是軟鏈接而已,但此時想用ln命令重新建立軟鏈接是失敗的,但是可以這樣強制設置變量就能執行成功!LD_PRELOAD=/lib/libc-2.9.so ln -s /lib/libc-2.9.so /lib/libc.so.6
紅色部分為glibc臨時指定的庫,這樣正確執行后libc.so.6就正確恢復了。
glibc是一個非常底層的庫,bash也依賴她,所以,如果把這個庫干掉了,基本上啥事都干不了了,但是為啥前面設置一下LD_PRELOAD變量 就可以了呢?是這樣的,LD_PRELOAD可以影響程序的運行時的鏈接(Runtime linker), 它允許你定義在程序運行前優先加載的動態鏈接庫,之前把libc.so.6這個軟連接給干掉了,所以系統找不到這個庫了,但是通過LD_PRELOAD設置一下glibc這個庫的真實地址就可以解決這個問題了
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。