實(shí)時(shí)連接器ld.so.1文件損壞或丟失后系統(tǒng)怎樣恢復(fù)正常?
前言:看到網(wǎng)上好多人遇到ld.so.1文件損壞或丟失,系統(tǒng)癱瘓?jiān)儐栐鯓犹幚恚瑸榇宋覍⑦@一故障現(xiàn)象進(jìn)行歸納總結(jié),供各位網(wǎng)友參考,希望從中得到幫助 。
一、動(dòng)態(tài)連接庫(kù)的概念
大家都知道,在Windows系統(tǒng)中有很多的動(dòng)態(tài)鏈接庫(kù)(以.DLL為后綴的文件,DLL即Dynamic Link Library) 。這種動(dòng)態(tài)鏈接庫(kù),和靜態(tài)函數(shù)庫(kù)不同,它里面的函數(shù)并不是執(zhí)行程序本身的一部分,而是根據(jù)執(zhí)行程序需要按需裝入,同時(shí)其執(zhí)行代碼可在多個(gè)執(zhí)行程序間共享,節(jié)省了空間,提高了效率,具備很高的靈活性,得到越來越多程序員和用戶的青睞 。
Solaris系統(tǒng)里面有些庫(kù)文件,當(dāng)編譯的時(shí)候,如果把庫(kù)文件也編譯到文件中,那文件本身就可以執(zhí)行,但這樣的缺點(diǎn)是生成的文件十分大 。所以很多情況下使用動(dòng)態(tài)連接庫(kù),就是編譯出的文件不包含庫(kù),而只包含到庫(kù)的指針,這樣在運(yùn)行的時(shí)候會(huì)到指定的地方調(diào)用這個(gè)庫(kù),這樣就減少了文件的大小 。Solaris包含的實(shí)時(shí)連接器ld.so.1,就是動(dòng)態(tài)對(duì)象的運(yùn)行階段鏈接程序 。
從下面的的命令中,我們可以列出可執(zhí)行文件或者共享對(duì)象的動(dòng)態(tài)從屬關(guān)系,這玩意沒了,你的什么ls,cd什么的命令就都費(fèi)了,如果ld.so.1文件被破壞了,系統(tǒng)肯定無法正常啟動(dòng) 。
/usr/bin/ldd [filename]
/* List the dynamic dependencIEs of executable files */
# /usr/bin/ldd /usr/bin/cat
libc.so.1 => /usr/lib/libc.so.1
libdl.so.1 => /usr/lib/libdl.so.1
/usr/platform/SUNW,Ultra-1/lib/libc_psr.so.1
# ldd /usr/bin/ls
libc.so.1 => /usr/lib/libc.so.1
libdl.so.1 => /usr/lib/libdl.so.1
/usr/platform/SUNW,Ultra-1/lib/libc_psr.so.1
# ldd /usr/bin/cp
libc.so.1 => /usr/lib/libc.so.1
libdl.so.1 => /usr/lib/libdl.so.1
/usr/platform/SUNW,Ultra-1/lib/libc_psr.so.1
二、ld.so.1文件損壞或丟失解決的辦法
1.如果意外的/usr/lib/ld.so.1損壞或丟失,系統(tǒng)沒有正常啟動(dòng)的情況下:
執(zhí)行命令都會(huì)出現(xiàn)錯(cuò)誤信息:
#reboot
Reboot :can not find /usr/lib/ld.so.1
#find
Find: /usr/lib/ld.so.1
#ls
Ls: can not find can not find
這時(shí),千萬不要重啟動(dòng),立即用/usr/sbin/static/mv、/usr/sbin/static/cp命令恢復(fù) :
#/sbin/static/cp /etc/lib/ld.so.1 /usr/lib/
經(jīng)過實(shí)驗(yàn),系統(tǒng)恢復(fù)正常!這時(shí),你試試如下命令,就能體會(huì)到為什么了 。
---------------------------------------------------------------------------
# ls /usr/sbin/static
cp* ln* mv* rcp* tar*
SUN的工程師非常聰明,為了防備了這個(gè)情況,做了以上幾個(gè)不使用動(dòng)態(tài)連接庫(kù)的命令
#find / -name ld.so.1 -print
/usr/lib/sparcv9/ld.so.1
/usr/lib/ld.so.1
/etc/lib/ld.so.1
blade% ls -ld /usr/lib/sparcv9/ld.so.1
-rwxr-xr-x 1 root bin 191672 Jul 28 2001 /usr/lib/sparcv9/ld.so.1
blade% ls -ld /usr/lib/ld.so.1
-rwxr-xr-x 1 root bin 196852 Jul 28 2001 /usr/lib/ld.so.1
blade% ls -ld /etc/lib/ld.so.1
-rwxr-xr-x 1 root bin 196852 Jul 28 2001 /etc/lib/ld.so.1
---------------------------------------------------------------------------
從上面的,我們又可以看到,這個(gè)庫(kù)文件,不僅僅在/usr/lib有,在/etc/lib、/usr/lib/sparcv9/下也有,所以你就重新在本機(jī)上拷貝一份就行了 。這些信息在這個(gè)連接庫(kù)不正常的情況下是看不到的 。
2.如果意外的/usr/lib/ld.so.1損壞或丟失,系統(tǒng)啟動(dòng)的情況下:
錯(cuò)誤信息:
Uname:can not find /usr/lib/ld.so.1
Loadkeys: can not find /usr/lib/ld.so.1
Killed
Cfsfstype: can not find /usr/lib/ld.so.1
Expr: can not find /usr/lib/ld.so.1
Swap: can not find /usr/lib/ld.so.1
Killed
Fsck: can not find /usr/lib/ld.so.1
Killed
這時(shí),用光盤啟動(dòng)到單用戶下:
ok boot cdrom -s (放入啟動(dòng)安裝光盤)
推薦閱讀
- vivox27中顯示實(shí)時(shí)網(wǎng)速的簡(jiǎn)單操作方法
- usr/lib/ld.so.1損壞或丟失
- 高德地圖怎么看實(shí)時(shí)公交
- 微博實(shí)時(shí)掉了大概得多久恢復(fù)
- 華為微信實(shí)時(shí)通話怎么錄音
- 紅米6顯示實(shí)時(shí)網(wǎng)速的操作教程
- 連接器有哪幾種
- 華為nova3顯示實(shí)時(shí)網(wǎng)速的操作教程
- iqoo中設(shè)置顯示實(shí)時(shí)網(wǎng)速具體操作步驟
- 手機(jī)qq怎么查詢實(shí)時(shí)公交?
