版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29695701/article/details/87724725
错误信息:
$ ls
ls: relocation error: /usr/lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
问题背景:
/lib64/libc.so.6
是一个软链接,指向/lib64/libc.so-2.12
。- 我有一个程序需要使用
/lib64/libc.so.6
,其版本应兼容GLIBC_2.17
,所以我从其他Linux上找到了含有GLIBC_2.17
的libc.so
:libc.so-2.17
,在将其放在该系统下后,将软链接/lib64/libc.so.6
重新指向了libc.so-2.17
。- 完成上一步之后,执行命令
ls
,出现上面的那个错误。- 不止命令
ls
,其他的命令比如:cp
、ln
、rm
也基本不可用。- 这个错误很惊悚。
解决方式:
- 原因:操作系统版本冲突。当前系统是 CentOS-6.5 ,而
libc.so-2.17
是在 CentOS-7.2 中拷贝过来的。当前系统依赖的是原版本的so
,所以很多命令跑不起来。 - 解决方式:使用命令
sln
将软链接重新设置回来。命令如下:
$ sln /lib64/libc.so-2.12 /lib64/libc.so.6
执行之后问题基本解决。
如果仍旧想使用
libc.so-2.17
,则需要在系统中编译安装libc.so-2.17
。不过,这个问题产生的根本原因是系统版本冲突,也就是说,即便在当前系统编译安装好了新的so文件,在之后使用软件的过程中也会出现其他新的问题,所以最好还是换用最新的操作系统。
参考链接:
https://bbs.csdn.net/topics/320208634
https://www.cnblogs.com/weijing24/p/5890031.html