Linux

未連結的 libc.so.6

  • May 1, 2022

我通過執行取消連結 libc.so.6

$ sudo unlink /usr/lib/libc.so.6

為了修復它,我在 U 盤上啟動了 ubuntu 並嘗試再次連結它。問題是我不知道 libc 的版本,也無法歸檔任何libc-*.so文件。

如何找到正確的文件來解決這種情況?

Arch 似乎在使用 GNU libc,這通常是大多數 Linux 發行版的預設設置。在撰寫本文時,目前版本似乎是 2.35-3。

通過列出 Arch 包內容,我看到:

$ unzstd < glibc-2.35-3-x86_64.pkg.tar.zst |tar tvf -  |grep libc.so
-rw-r--r-- root/root       255 2022-03-20 22:45 usr/lib/libc.so
-rwxr-xr-x root/root   2463384 2022-03-20 22:45 usr/lib/libc.so.6

不幸的是,它看起來/usr/lib/libc.so.6不是一個連結,而是 Arch 上的實際庫,所以你必須確保 Ubuntu 已經zstd安裝(sudo apt-get install zstd),然後下載 Arch glibc-2.35-3-x86_64.pkg.tar.zst(例如,使用上面連結的 Arch 包資訊頁面上的“從鏡像下載”連結) 到某個 Ubuntu 可以訪問它的地方,然後執行以下操作:

$ unzstd < glibc-2.35-3-x86_64.pkg.tar.zst |tar xvf -  usr/lib/libc.so.6
$ sudo mv usr/lib/libc.so.6 <the mount location of your Arch root in Ubuntu>/usr/lib/

引用自:https://unix.stackexchange.com/questions/701057