libc.so.6: cannot open shared object file报错处理

一、故障现象

现网一台redhat6主机自从被业务人员升级编译过某软件包以后,ssh无法正常登陆,登陆报错为libc.so.6: cannot open shared object file ,ldd 查看确认,使用的libc.so.6文件位于/lib64目录下。

[root@361way ~]# ldd /usr/sbin/sshd |grep libc.so
        libc.so.6 => /lib64/libc.so.6 (0x00007fa2017ed000)

通过查看该文件发现是一个软链接文件:

[root@361way ~]# ll /lib64/libc.so.6
lrwxrwxrwx 1 root root 12 Jul 15 21:50 /lib64/libc.so.6 -> libc-2.14.so

二、故障解决

通过对比同版本正常主机另一台redhat6主机,发现使用的libc.s0.6软链接的是libc-2.12.so 文件 ,所以可以确认该包被业务人员源码编译的时候升级了。按照之前的经验,将当前的软链先备份后再删除,然后重新链接 libc-2.12.so 文件即可解决问题。不过在执行rm -rf /lib64/libc.so.6后,再执行ls、mv、ln、cp等任一命令时都会出现类型如下的报错:

/bin/ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

网上查找该报错后,发现可以通过使用LD_PRELOAD解决,方法如下:

先删除连接 :
# cd /lib64
# LD_PRELOAD=/lib64/libc-2.3.6.so.bak rm libc.so.6  -->我可以正常删除,这一步省略,不能正常删除的,先执行该步
建立新连接 :
# LD_PRELOAD=/lib64/libc-2.3.6.so.bak ln -s /lib64/libc-2.3.6.so.bak libc.so.6

注:从redhat7以后已经没有x86位系统,老的x86位系统lib文件位于/lib目录。另外需要注意的是LD_PRELOAD与后面跟的命令rm 、ln等必须在同一行,不可以先执行LD_PRELOAD后再执行ln -s  ,这样还是会报错。

三、原理分析

LD_PRELOAD解决的原理是:linux调用so的库文件时,搜素路径为当前路径,再是系统lib目录。但是提供了一个LD_PRELOAD系统变量来改变这个顺序。设置LD_PRELOAD了后,库加载的顺序就改为:

搜素路径为: LD_PRELOAD ,当前路径,再是系统lib目录
当然,解决方法并非这一种,还可以使用网上推荐的另外一种方法busybox法,在redhat6版本上的busybox不依赖任何lib库文件的,如下:

[root@361way ~]# whereis busybox
busybox: /sbin/busybox /usr/share/man/man1/busybox.1.gz
[root@361way ~]# ldd /sbin/busybox
        not a dynamic executable

注意,这里并非绝对,一些发行版本上busybox是会依赖如libc.so.6库文件的。

通过busybox ln 或busybox rm 等执行想要的操作。

总结:这里的出错只能算是一个小问题,如果出现shell 都无法执行时,就需要修复模式或光盘引导进行解决了,如果缺了相应的包文件,还在在修复查模式下,安装相应的软件包

时间: 2024-09-20 05:48:17

libc.so.6: cannot open shared object file报错处理的相关文章

OSErro:libcudamat.so:cannot open shared object file

问题描述 OSErro:libcudamat.so:cannot open shared object file 我在程序中写入import cudamat,当我在wingIDE中运行的时候,这句报错,如题.但是当我在ubuntu terminal 下执行它却一切顺利.在wingIDE中我有设置了Python Executable 路径和 Python Path. 为何在terminal下执行好好的在wingide中有问题呢,调试了代码,就是在一个加载动态库的地方loadlibrary('lib

libpthread.so.0: cannot open shared object file解决方法(原创)

在linux 5上装10G RAC时,常常会碰到"libpthread.so.0: cannot open shared object file"这个报错的,这个报错是由于无法使用vipca导致的. 该报错有以下两种解决方案:方法1  不去理会,选择继续,然后安装10.2.0.4及以上版本的patchsets,然后在来手工执行vipca完成vip配置工作,因为这个错误在10.2.0.4版本中已经得到修复方法2 手工配置 确认网络配置 # ./oifcfg getif eth0 172.

svnserve:error while loading shared libraries: libaprutil-1.so.0: cannot open shared object file: No such file or directory

使用yum安装svn 开启svnserver是遇到如下问题: svnserve:error while loading shared libraries: libaprutil-1.so.0: cannot open shared object file: No such file or directory 缺少了apache的apr-util的支持. 于是再安装一下yum install -y apr-util就好了.

解决 libcurl.so.3: cannot open shared object file的问题

php配置扩展时遇到了个这个问题:PHP Warning: PHP Startup: Unable to load dynamic library '/home/s/apps/php-5.2.6/extensions/curl.so' – libcurl.so.3: cannot open shared object file: No such file or directory in Unknown on line 0 google了下,都说解决办法是:  代码如下 复制代码 ln -s /u

error while loading shared libraries: libpcre.so.1: cannot open shared object file

   执行启动nginx:/usr/local/nginx/sbin/nginx    错误:/usr/local/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory     查找:[root@bogon lib]# find /-type f -name *libpcre.so.*   执行:

nginx无法启动提示libpcre.so.1: cannot open shared object file

大概可以看得出来,缺少了libpcre这个库文件.可是,我是新手,感觉下手无处呀.最后Google了下.解决方法还是非常简单呢.用root用户执行一条命令即可搞定. 问题 [root@bogon lib64]# /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No

libGraphicsMagickWand.so: cannot open shared object file: No such file or directory stack traceback:

  参考博文:http://www.linuxidc.com/Linux/2016-07/133213.htm       ==>> Check Passed, the num of bbox and frames are equal ...qlua: ...iao/torch/install/share/lua/5.1/graphicsmagick/Image.lua:322: libGraphicsMagickWand.so: cannot open shared object file:

MySQL数据备份Out of resources when opening file报错

今天,使用命令导出数据库,以便在新的VPS上恢复,出现了一下情况: 报错信息: mysqldump: Got error: 23: Out of resources when opening file './zrblog_dfhghdt/pre_ucenter_settings.MYD' (Errcode: 24) when using LOCK TABLES 首先用ulimit -n命令查看下打开文件数限制: root@zr [~]# ulimit -n 1024 我们需要调整MySQL配置文

linux使用wkhtmltopdf报错error while loading shared libraries:

官网提示 linux需要这些动态库.depends on: zlib, fontconfig, freetype, X11 libs (libX11, libXext, libXrender) 在linux上执行 ./wkhtmltopdf –page-size A4 www.baidu.com pdf.pdf 报错   error while loading shared libraries: libXrender.so.1 root@mag-sit:/home/mag-sit/wkhtmlt