場景
拷貝其他系統中的libc.so文件到目標系統,目錄存放/usr/local/lib64,執行指令ldconfig,系統異常
rm: relocation error: /usr/lib64/libc.so: symbol _dl_exception_create, version GLIBC_PRIVATE not defined in file ld-linux-aarch64.so.1 with link time reference
執行處理ls,pwd指令之外,全部異常
rm: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
嘗試解決方案:
/sbin/sln /lib64/libc-2.12.so /lib64/libc.so.6
LD_PRELOAD解決的原理是:linux調用so的庫文件時,搜素路徑爲當前路徑,再是系統lib目錄。但是提供了一個LD_PRELOAD系統變量來改變這個順序。設置LD_PRELOAD了後,庫加載的順序就改爲:
搜素路徑爲: LD_PRELOAD ,當前路徑,再是系統lib目錄
先刪除連接 :
# cd /usr/lib64
# LD_PRELOAD=/usr/lib64/libc.so rm libc.so.6 無法刪除
建立新連接 :
# LD_PRELOAD=/usr/lib64/libc.so ln -s /lib64/libc.so.bak libc.so.6 創建失敗
sln /lib64/libc.so.6.bak /lib64/libc.so.6