当前位置: 首页>>技术教程>>正文


如何解决“无法打开共享对象文件libudev.so.0”的错误?

, ,

问题描述

尝试在Ubuntu 64上运行Game Dev Tycoon。它要求上述对象。

我跑了sudo apt-get install libudev1:i386,它已经安装完毕。

我有/lib/i386-linux-gnu/libudev.so.1,但没有libudev.so.0

最佳解决方案

对于64位Ubuntu,它位于32位libudev0包中。

您可以使用以下命令安装它:

sudo apt-get install libudev0:i386

该软件包已在14.04从Ubuntu中删除。您将需要从旧版本安装它。

次佳解决方案

要修复,我将libudev.so.1链接到libudev.so.0

sudo ln -sf /lib/$(arch)-linux-gnu/libudev.so.1 /lib/$(arch)-linux-gnu/libudev.so.0

第三种解决方案

对于Ubuntu 14.04及以上

我找到的最简单的方法就是download the .deb(direct link to 64-bit download32-bit download),然后双击它进行安装或使用dpkg进行安装:

dpkg -i libudev0_175-0ubuntu9_amd64.deb

对于以前的版本

在以前的ubuntu版本中,这个软件包在官方仓库中可用。您可以使用以下方式安装:

sudo apt-get install libudev0:i386

第四种方案

我对一个不同的计划有同样的问题,但肖恩接受的答案根本没有帮助我。在我升级的64位13.04安装中,libudev0无法以64位格式或i386格式提供。并且ia32-libs已经安装。所以没有骰子。

我所要做的只是稍微修改版本的senshikaze更多的技术解决方案。我手动将libudev.so.0链接到x86_64 lib目录中的libudev.so.1,因此:

cd /lib/x86_64-linux-gnu/
sudo ln -sf libudev.so.1 libudev.so.0

这为我修好了。

第五种方案

尝试使用Node Webkit的nw可执行文件时可能会发生此错误。喜欢这个:

./nw: error while loading shared libraries: libudev.so.0: cannot open shared object file: No such file or directory

怎么解决:

  1. 获取十六进制编辑器,允许您更改二进制ASCII字符串,例如。 hexedit的:

    • 在终端(Ctrl + Alt + T)中,运行:sudo apt-get install hexedit

    • 按照终端中显示的说明(如果需要,键入密码,确认安装)。

  2. 转到包含节点webkit的目录:

    • 在我的情况下:cd ~/Dokumenty/node-webkit-*

  3. 使用十六进制编辑器命令在sudo之前打开nw二进制文件:

    • 运行:sudo hexedit nw

  4. 以ASCII字符串搜索libudev.so.0

    • 如果使用hexedit:按Tab

    • Ctrl + S

    • 类型:libudev.so.0

  5. libudev.so.0字符串中的0更改为1,因此它变为:libudev.so.1

    • 使用箭头键选择libudev.so.0字符串中的0

    • 在键盘上按1

  6. 退出并保存更改。

    • Ctrl + X

    • Y保存更改。

你完成了。当遵循相同的指令除了十六进制编辑Atraci文件而不是nw以外,这也解决了Atraci二进制文件的问题。

第六种方案

在Ubuntu 14.04上唯一可行的答案是可以接受的答案,因为许多评论指出这可能会导致系统问题(尽管我自己不知道),所以我想出了一个妥协方案。这个脚本将会提示(在终端中)你的root密码。它会创建符号链接并启动应用程序(在我的情况下,爆米花时间)。当您退出应用程序时,它将使用现有的sudo会话来删除符号链接:

#!/bin/sh
sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
./Popcorn-Time #replace this line with the path to the executable you want to launch
sudo rm /lib/i386-linux-gnu/libudev.so.0

第七种方案

我只是找到了一种方法来完成这项工作,但是非常愚蠢。

我在我的系统上安装了Google Chrome,并且Chrome已经嵌入了此共享对象。所以,我只需要在Chrome安装目录中建立一个符号链接到库。

ln -sf /opt/google/chrome/libudev.so.0 /lib/x86_64-linux-gnu/libudev.so.0

它对我来说工作得很好。

第八种方案

这是我找到的最简单的解决方案

sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0

第九种方案

正如Phil Strong指出的那样

安装libudev.so.1

sudo apt-get install libudev1:i386

然后将其链接为libudev.so.0

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/875.html,未经允许,请勿转载。