LINUX 修复relocation error: /lib/tls/libc.so.6

时间:2023-03-09 15:23:29
LINUX 修复relocation error: /lib/tls/libc.so.6

错误信息:

relocation error: /lib/tls/libc.so.6: symbol _dl_tls_get_addr_soft, version GLIBC_PRIVATE not defined in file ld-linux.so.2 with link time reference.

网上的大多数方法都是回复g

核心解决方法:

export LD_PRELOAD=/lib/tls/libc-2.3.6.so    ## 我这台机器上没有libc-2.** 等文件

我的解决方法是

export LD_PRELOAD=/etc/lg.so.cache     ##这个文件是从其他型号上copy过来的,出问题的机器已经被污染了

解决方法原因参考:

  1. libc.so.6 是c运行时库 glibc的软链接,而系统几乎所有程序都依赖c运行时库。程序启动和运行时,是根据libc.so.6 软链接找到glibc库。删除libc.so.6将导致系统的几乎所有程序不能工作。
  2. 每个glibc.so文件有它支持的libc版本,可以通过# strings /lib64/libc.so.6 |grep GLIBC_ 查看。如果程序编译的时候链接的libc库版本不在程序运行环境下的glibc库支持的libc版本之内,也会报错.

strings 方法列出了libc.so.6加载的顺序

相关下载文件地址:

http://ftp.gnu.org/gnu/glibc/

https://centos.pkgs.org/6/centos-updates-x86_64/glibc-2.12-1.209.el6_9.2.x86_64.rpm.html