1. 程式人生 > >升級GLIBC,導致庫檔案出錯

升級GLIBC,導致庫檔案出錯

上週在debian下安裝winrar,要求升級glibc到2.4,而deiban4.0自帶的glibc是2.3.6版本的(可是/lib/libc.so.6 檢視版本).就按著提示直接用apt-get安裝glibc,沒裝成功反而導致無法進入系統。開機的時候載入一半時候,提示/lib/tls/i686/cmov/libc.so.6共 享連結檔案無法載入。可能是之前升級庫檔案沒有成功的原因.後來用ubuntu光碟進入系統,把debian的根目錄掛載進來。查看了 /lib/tls/i686/cmov下的檢視libc.so.6,它是連結到libc-2.3.6的一個檔案下,連結並沒有出,.還是刪了這個檔案重新做了個軟 連結.

rm -rf libc.so.6
rm -rf libpthread.so.0
ln -sf libc-2.3.6.so libc.so.6
ln -sf libpthread-2.3.6.so libpthread.so.0

(因為啟動的時候提示到這兩個檔案錯誤,所以只對這兩個檔案做了一下軟體連結)

重啟後,還是無法進入圖形系統,不過能進基本系統。而且在使用一些基本命令還是會錯誤,如使用ls命令時會提示"ls:relocation error:/lib/tls/i686/cmov/libpthread.so.o:symbol errno,version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference"。由此看來庫檔案的問題還是沒有解決。由於在升級glibc主要是對/lib庫中的libc.so.6,libm.so.6, libpthread.so.0和librt.so.1這四個檔案的修改(參考文章)。所以問題應該在這四個檔案上面。用ubuntu光碟進入系統,把原系統掛載把/lib下的這個四檔案拷 貝到/lib/tls/i686/cmov下.再次啟動就可以了。

#cp -a /lib/tls/i686/cmov /homa/lanazou(備份一下)
#cd /lib/tls/i686/cmov
#rm -rf libc.so.6 libm.so.6 libpthread.so.0 librt.so.1
#rm -rf libc-2.3.6.so libm-2.3.6.so libpthread-2.3.6.so librt-2.3.6.so
# ln -sf libc-2.3.6.so libc.so.6
# ln -sf libm-2.3.6.so libm.so.6
# ln -sf libpthread-2.3.6.so libpthread.so.0
# ln -sf librt-2.3.6.so librt.so.1

glibc庫,是系統中最核心的共享庫和工具,所以最好不要覆蓋系統預設的,如果盲目覆蓋,很可能導致整個系統癱瘓,因為一般更新glibc庫時,其它所有依賴libc庫的共享庫都需要重新被編譯一遍.所以要做了備份工作.防止系統崩潰.