修改lib64/l.ibc.so6导致系统命令都不能用

news/2024/11/8 0:29:27/

问题:想升级libc-2.12.so到libc2.17,拷贝了一个libc2.17到lib64下,然后建立软连接到l.ibc.so6,导致系统除了cd之类的命令,其他都不能使用

报错:relocation error: /usr/lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVA not defined i

解决方法1:ldconfig -l -v /lib64/libc-2.12.so

解决方法2:

libc.so.6被破坏的修复方法:

在每条命令前加上 LD_PRELOAD=/lib64/libc-2.12.so 前缀,不能使用的命令可以重新使用。例如 LD_PRELOAD=/lib64/libc-2.12.so ls,ls命令可以重新使用。删除lib64下被破坏libc.so.6文件,再使用LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6,问题解决。

libc.so.6被删除的修复方法:

LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6

#############################################

libc.so.6介绍:

libc.so.6是glibc的软链接,glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc,所以说绝大部分操作命令都缺少不了它。如果误删或破坏了libc.so.6,大部分系统命令将无法执行,ssh登录系统也不成功,只会无休止的提示以下错误:

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

这种情况下,大部分命令已经不能执行了,只能执行例如cd,echo等小部分命令,而实用的cp,mv则不可用,如果想解决,记得ssh一定不要断开,如果ssh已断开则无法重新连接上,得使用另外的方法用光盘重启进入急救模式!!!

在同版本系统上查看/lib/libc.so.6得知是属于libc-2.12.so的软链接,因此,libc-2.12.so文件肯定还是存在的,误删的只是软链接而已,但此时想用ln命令重新建立软链接是失败的,但是可以这样强制设置变量就能执行成功!

LD_PRELOAD=/lib/libc-2.12.so   ln -s /lib/libc-2.12.so /lib/libc.so.6

斜体加粗部分为glibc临时指定的库,这样正确执行后libc.so.6就正确恢复了。

glibc是一个非常底层的库,bash也依赖它,所以,如果把这个库干掉了,基本上啥事都干不了了,但是为啥前面设置一下LD_PRELOAD变量 就可以了呢?是这样的,LD_PRELOAD可以影响程序的运行时的链接(Runtime linker), 它允许你定义在程序运行前优先加载的动态链接库,之前把libc.so.6这个软连接给干掉了,所以系统找不到这个库了,但是通过LD_PRELOAD设置一下glibc这个库的真实地址就可以解决这个问题了。


http://www.ppmy.cn/news/64109.html

相关文章

肝一肝设计模式【七】-- 代理模式

系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 肝一肝设计模式【五】-- 适配器模式 传送门 肝一肝设计模式【六】-- 装饰器模式 传送门 文…

【shell脚本里的数组】

目录 一、数组的定义方法1、定义数组1.1、使用shell脚本来写出怎么查看这个数组有没有缺少元素1.2、使用shell脚本,来生成数组1.3、元素的切片 二、数组追加元素三、传输和传出1、向函数传入数组的值2、从函数返回数组 一、数组的定义方法 ( 20 10 60…

企业布局新媒体矩阵,如何走得更远?

企业搭建新媒体矩阵有很多好处——扩大品牌声量、丰富内容形式、提高宣传效率、降低运营风险、节省广告成本...... 即便如此,能真正让新媒体矩阵产生如此效果的企业,却是凤毛麟角。 更多的企业,往往冒然入场,也黯然离场&#xff0…

【iOS】---pthread,NSThread

在iOS中多线程开发有四种方式,在之前我们浅浅了解了一下GCD,这期来看看pthread和NSThread pehread pthread简介 pthread 是一套通用的多线程的 API,可以在Unix / Linux / Windows 等系统跨平台使用,使用 C 语言编写,…

头歌机器学习---决策树

第1关:什么是决策树: 如何构造出一棵好的决策树呢?其实构造决策树时会遵循一个指标,有的是按照信息增益来构建,如ID3算法;有的是信息增益率来构建,如C4.5算法;有的是按照基尼系数来构…

Python并发编程之进程理论

前言 本文将详细介绍进程相关概念。 进程和程序 计算机上的未运行的QQ、Wechat等都属于程序,但是一旦当这些程序运行起来的话,就可以被称为进程。因此可以如下定义程序和进程: 程序:就是存在硬盘上的一堆代码。 进程&#xf…

pytest+allure实现接口自动化框架(1、yml管理case 2、变量的处理 3、参数的传递 4、相互依赖接口的处理)

目录 前言: 1.1 源码: 1.2 实现功能 1.3 yml管理case功能 框架详细介绍: 一、使用git远程连接&上传&下载项目 1.1 用户权限问题:本地生成密钥,gitlab后台端绑定公钥 1.1.1 本地生成密钥 1.2 项目里没有…

scratch绘制直尺 中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析2023年3月

目录 scratch绘制直尺 一、题目要求 1、准备工作 2、功能实现 二、案例分析