libc.so.6: cannot open shared object file

场景

            拷贝其他系统中的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


猜你喜欢

转载自blog.51cto.com/fengyuzaitu/2456632