如何解决“无法打开共享对象文件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
怎么解决:
-
获取hex编辑器,允许您更改二进制的ASCII字符串,例如。 hexedit :
- 在终端( Ctrl + Alt + T )中,运行:
sudo apt-get install hexedit
。 - 按照终端中提供的说明(如果需要,键入密码,确认安装)。
- 在终端( Ctrl + Alt + T )中,运行:
- 转到节点webkit的目录:
- 就我而言:
cd ~/Dokumenty/node-webkit-*
。
- 就我而言:
- 使用以
sudo
开头的hex编辑器命令打开nw二进制文件:- 运行:
sudo hexedit nw
。
- 运行:
- 搜索
libudev.so.0
作为ASCII字符串:- 如果使用hexedit :按Tab键 。
- 按Ctrl + S.
- 键入:
libudev.so.0
。
- 将
libudev.so.0
字符串中的0
更改为1
,因此它变为:libudev.so.1
:- 使用箭头键在
libudev.so.0
字符串中选择0
。 - 按键盘上的1 。
- 使用箭头键在
- 退出并保存更改。
- 按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
这对我有所帮助