Linux
幾乎沒有命令工作 - 重定位錯誤:符號 __getrlimit,版本 GLIBC_PRIVATE 未在 libc.so.6 中定義
我通過 SSH 連接到我沒有 root 訪問權限的機器。要安裝一些我從我的機器上傳的庫並將它們放在
~/lib
遠端主機的目錄中。現在,對於我執行的幾乎所有命令,我都會收到以下錯誤(例如 for
ls
)或一條Segmentation fault (core dumped)
消息。ls: relocation error: /lib/libpthread.so.0: symbol __getrlimit, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference
我成功執行的唯一命令是
cd
直到現在pwd
。我幾乎可以通過使用 TAB 來自動完成在目錄中找到文件ls
,因此我可以在目錄中移動。
uname -r
也返回Segmentation fault (core dumped)
消息,所以我不確定我使用的是什麼核心版本。
由於您可以登錄,因此沒有任何重大問題;大概是您的 shell 的啟動腳本添加
~/lib
到LD_LIBRARY_PATH
, 以及 中的壞庫~/lib
,是導致您看到的問題的原因。要解決此問題,請執行
unset LD_LIBRARY_PATH
這將允許您執行
rm
等vim
以刪除麻煩的庫並在適當的情況下編輯您的啟動腳本。
問題是您已將副本
glibc
放入您的~/lib
目錄,並且該庫與您上傳到的系統不兼容。正在引用該庫,~/lib
如$LD_LIBRARY_PATH
.要臨時解決此問題,只需
unset LD_LIBRARY_PATH
- 這將像unset
內置的 shell 一樣工作。然後,您將能夠執行您最喜歡的文本編輯器,以刪除啟動文件中首先設置變數的任何內容。