场景
拷贝其他系统中的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=/lib64/libc-2.17.so rm -rf /lib64/libc.so.6 无法删除
建立新链接 :
# LD_PRELOAD=/lib64/libc-2.17.so ln -s /lib64/libc2.17.so /lib64/libc.so.6 创建失败
sln /lib64/libc.so.6.bak /lib64/libc.so.6