relocation error: /usr/lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not define

版权声明:本文为博主原创文章,未经博主允许不得转载。 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.17libc.solibc.so-2.17,在将其放在该系统下后,将软链接/lib64/libc.so.6重新指向了libc.so-2.17
  • 完成上一步之后,执行命令ls,出现上面的那个错误。
  • 不止命令ls,其他的命令比如:cplnrm也基本不可用。
  • 这个错误很惊悚。

解决方式

  • 原因操作系统版本冲突。当前系统是 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


猜你喜欢

转载自blog.csdn.net/qq_29695701/article/details/87724725
今日推荐