如何解决“无法打开共享对象文件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及以上版本

我找到的最简单的方法是只下载.deb ( 直接链接到64位下载和32位下载 )并双击它以安装它或使用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. 获取hex编辑器,允许您更改二进制的ASCII字符串,例如。 hexedit

    • 在终端( Ctrl + Alt + T )中,运行: sudo apt-get install hexedit
    • 按照终端中提供的说明(如果需要,键入密码,确认安装)。
  2. 转到节点webkit的目录:
    • 就我而言: cd ~/Dokumenty/node-webkit-*
  3. 使用以sudo 开头的hex编辑器命令打开nw二进制文件:
    • 运行: sudo hexedit nw
  4. 搜索libudev.so.0作为ASCII字符串:
    • 如果使用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二进制文件在遵循相同指令时的问题,除了hex编辑Atraci文件而不是nw。

这个唯一适用于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 

我是在14.04做到的,但应该是相似的。 只需删除包并重新安装即可。 正确安装了正确的库。

 apt-get purge google-chrome-stable apt-get install google-chrome-stable 

我确信其他答案都有效,但我在修改由配置管理包管理的文件系统对象方面有一定的基础。

这就是我用来解决32位Ubuntu 15.04上的同样问题。

 cd i386-linux-gnu sudo ln -sf libudev.so.1 libudev.so.0 

更新我创建了一个bash脚本来包装你想要执行的程序。 您可以将其添加到本地bin文件夹,只需在没有复制和粘贴或运行shell脚本的情况下启动程序。

 #!/bin/bash ProgramToExecute="/PATH/TO/PROGRAM" #Example: $HOME/dart/./DartEditor system=$(uname -m) #Returns x86_64 on 64 bit systems libdir="/lib/$system-linux-gnu" libudev1="$libdir/libudev.so.1" if [ ! -f $libudev1 ] then #check if an i386 folder exist because ' uname -m' returns i686 instead of i386. libdir="/lib/i386-linux-gnu" libudev1="$libdir/libudev.so.1" #if none of the lookups return a file, this script exits, BreakUpNotice="This $libudev1 isn't working out. It's not you it's me. Or maybe you forgot to install libudev1 library. sudo apt-get install libudev1 " [ ! -f $libudev1 ] && echo $BreakUpNotice && exit 0 fi libudev0="$libdir/libudev.so.0" echo "$libudev1 found." sudo ln -sf $libudev1 $libudev0 sudo -k #revoke sudo $($ProgramToExecute) NoticeAfterExec="Enter sudo to del libudev link (recommended) or press CTRL+C to cancel." RmSuccess="And $libudev0 link is gone." RmFailed="Whaat? $libudev0 still exists." echo $NoticeAfterExec sudo rm $libudev0 sudo -k [ ! -f "$libudev0" ] && echo $RmSuccess || echo $RmFailed exit 

旧答案在Ubuntu 14.04中,当我尝试使用实时预览(Chromium)时,我收到了来自Dart编辑器的错误消息。 通过安装libudev1并创建符号链接解决了该错误。

  sudo apt-get install libudev1 

我还使用TenLeftFingers上面提到的脚本来执行DartEditor。

  #!/bin/sh sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0 ./DartEditor sudo rm /lib/i386-linux-gnu/libudev.so.0 

如果Dart编辑器未执行,请确保已安装JAVA且这不是权限问题。

  sudo apt-get install python-software-properties sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installer 

并使IDE可执行:

  sudo chmod a+x ./DartEditor 

这对我有用。

从Xubuntu Precise升级到Trusty后,我在32位系统上遇到了同样的错误。 这为我修好了:

 sudo dpkg-reconfigure google-chrome-stable 

我在这里找到了 。 绝对没有参数,我不太确定如何修复它,但确实如此。 我最喜欢的是它不需要做任何可能在将来给我带来问题的事情,并且不要求我追捕任何包裹。

如果有人在Ubuntu上的libudev.so.0和Emotiv Epoc SDK开发版上挖掘网页进行修复时偶然发现了这个页面,我希望以下内容有所帮助:

//我的配置是64位Ubuntu 13.04

对于64位系统:

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

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

什么允许防止加载共享库时出现“错误:libudev.so.0:错误的ELF类:ELFCLASS32”

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

对于32位系统:

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1。 /lib/i386-linux-gnu/libudev.so.1

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

什么允许防止“加载共享库时出错:libudev.so.0:错误的ELF类:ELFCLASS64”(请注意,这是一个猜测,我在64位系统上)

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

EmotivControlPanel,EmoKey,EmoComposer,Java示例和少量定制的Qt示例应该能够在执行上述操作后运行(我已经尝试了上面的所有步骤+在Web上找到的其他步骤(堆栈溢出,…),但没有一个正常工作对我来说,这就是我在“尝试和错误”之后最终做的事情

最后但并非最不重要的,如果有人知道如何在64位系统上运行针对32位库编译的程序,而指定使用提供的第三方32BIT库?

更确切地说,对于那些知道我在说什么的人,我怎么能在我的64位系统上运行“EmoCube”和“BlueAvatar”Qt示例?

– >对于我到目前为止所尝试的内容,我能得到的最多是:“加载共享库时出错:libedk.so.1:错误的ELF类:ELFCLASS64”

我想i386目录中的那个lib的符号链接不会成功(虽然我还没试过),所以如果有人有答案…我期待着阅读它。

干杯全+

在终端中运行以下命令:

 cd /lib/x86_64-linux-gnu/ sudo cp libudev.so.0.13.0 libudev.so.1 

这对我有所帮助