ubuntu_修改libc.so.6 或者 libm.so.6的软链接导致sudo ls 等命令失效的解决方法

1. 背景

  • 运行一个binary 应用程序, 提示报错:
    • /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by 我的应用程序
  • string 一下符号表, 确实没有
  • 然后下载了一个 glibc-2.27, 安装到 usr/local/下, 并将 libm-2.27.so 和 libc-2.27.so 复制到 /lib/x86_64-linux-gnu目录下
    • 并在/lib/x86_64-linux-gnu中 建立软链接
      • 之前: libm.so.6 -> libm-2.23.so ,  libc.so.6 -> libc-2.23.so

      • 修改: libm.so.6 -> libm-2.27.so ,  libc.so.6 -> libc-2.27.so

  • 此时,出问题了:
    • 系统大部分命令 ls ln sudo 都不能使用了
    • 在终端 export LD_PRELOAD=/lib/x86_64-linux-gnu/ libc-2.23.so, 即修改回原来的库文件, 此时 ls可以用了, 但是 sudo 却还是用不了, 想用 ln -sf 命令 重新修改会系统原有的库链接, 也提示 Segmentation fault 或者 Permission denied

2. 解决方法

使用u盘启动盘 (重启系统, F12 /DEL/F2/等进入BIOS), 在U盘的系统中进入电脑, 找到目录 对应的/lib/x86_64-linux-gnu 目录,

执行下面命令, 修改会系统的原始链接.

sudo ln -sf libm-2.23.so  libm.so.6

sudo ln -sf libc-2.23.so  libc.so.6

3. 总结 

       当系统底层库出现缺少符号时, 不要单独升级某个文件,这可能导致各种不兼容问题,建议整体升级系统的库文件, 比如使用系统自带的指令进行系统更新!

参考:

记录一次libc.so.6文件被替换、删除引发的系统级故障之修复过程-CSDN博客

误删 libc.so.6的解决方法(开机启动不了)_libc.so.6丢失无法开机_Timsley的博客-CSDN博客

软链接libc.so.6错误的修正_如何修改libc.so.6_一个专家程序员的博客-CSDN博客

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惊鸿一博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值