【BUG】error while loading shared libraries: xxx.so.x: cannot open shared object file

遇到问题

安装某软件包时一直显示缺少xxx.so.x共享库(Shared Object/Library)文件

.so文件

.so文件是Linux/Unix系统上的动态链接共享库文件。
它包含可被多个程序共享和动态链接的目标代码。
使用共享库可以节省磁盘空间和内存,因为相同的库代码只需要加载一次就可以被多个程序共享使用。
编写的程序可以在运行时动态链接到需要的库中,而不是把所有库代码都静态链接到二进制文件中。

常见的Linux共享库文件包括:

.so文件 - 标准动态共享库
.so.x 或 .so.x.y.z - 带版本号的动态共享库
.a文件 - 静态库文件
.la文件 - 库加载器的文件

解决方案

sudo apt-get install --reinstall $(dpkg -S xxx | awk -F ": " '{print $1}')

dpkg -S xxx

用于搜索指定文件xxx属于哪个软件包。如果系统中存在该文件,将显示包含该文件的包名

awk -F ": " ‘{print $1}’

用于从dpkg命令的输出中提取包名。-F指定字段分隔符为":",$1表示打印第一个字段(即包名)

$()

是命令替换,它将运行命令并用结果替换$()中的内容

sudo apt-get install --reinstall

用于重新安装指定的软件包,--reinstall选项确保已安装的包会被重新下载并覆盖原有文件。

因此,该公式的全部功能是:自动查找包含指定文件的软件包,然后重新安装这些包,从而修复缺失或损坏的库文件。

使用示例:

假设程序报错说缺少libi18nlangtag.so这个库文件,我们可以运行:

sudo apt-get install --reinstall $(dpkg -S libi18nlangtag.so | awk -F ": " '{print $1}')

它将自动查找并重新安装包含libi18nlangtag.so的软件包,解决库文件缺失的问题。
这个公式简单有效,可以作为Linux用户的利器,在遇到由库文件缺失导致的程序运行错误时,快速地自动修复问题,让你的系统恢复正常。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值