在Ubuntu上运行32位exe:libudev.so:无法打开共享对象文件:没有这样的文件或目录

时间:2014-01-16 04:24:12

标签: linux shared-libraries ubuntu-12.04 32bit-64bit i386

我正在尝试运行使用libudev.so的exe,但它会出现此错误:

  加载共享库时出现

错误:libudev.so.0:无法打开共享对象文件:没有这样的文件或目录

正在运行uname -a

  

3.5.0-44-generic#67~minision1-Ubuntu SMP Wed Nov 13 16:16:57 UTC 2013 x86_64 x86_64 x86_64 GNU / Linux

我正在使用 Ubuntu 12.04

我已检查/lib /lib32 /lib64那里没有libudev 但是在Synaptic管理器中我可以看到安装了libudev0(见下图)

libudev on Synaptic Manager 我可以在/lib/x86_64-linux-gnu/libudev.so.0中找到它。

可能出现什么问题?

4 个答案:

答案 0 :(得分:7)

事实证明(我怀疑)您试图在64位系统上运行32位可执行文件。 64位Linux内核能够运行32位可执行文件(这就是为什么你没有得到“exec格式错误”),但它需要一组独立的(32位)库:64位版本的{{1对于32位程序没用。 (有关共享库依赖关系解析的一些详细信息,请参阅ld.so manpage)。

现代基于Debian的发行版支持多个体系结构的同步库安装。 libudev.so.0应该得到一个32位版本的库及其所有依赖项(如果它是第一次使用32位应用程序,可能会有很多它们)。如果您从古老的安装升级,则可能需要将apt-get install libudev0:i386添加到i386支持的体系结构中,如下所示:

dpkg

如果程序需要其他一些库,也可以使用一些建议:

  • 使用ldd一次查看所有依赖项(以及缺少的内容)
  • 安装apt-file并运行dpkg --add-architecture i386 ,这样您就可以按文件名查找包名,即使当前未安装包(例如:apt-file update

还有一种旧的Debian方式在64位系统上获取32位库:amd64存储库中的apt-file search /libudev.so.0包提供了一组库,概念上是“应用程序可能需要的所有内容”。 不要使用这种方法除非你正在运行Debian squeeze或更早版本(或者是同一年龄的基于debian的发行版)。即使它有效,也无法保证程序也不需要其他库。当多数支持还没有准备就绪时,ia32-libs很有用,那是几年前的事了。

答案 1 :(得分:7)

我只是遵循了这些说明,它运作得很好。

https://askubuntu.com/questions/369310/how-to-fix-missing-libudev-so-0-for-chrome-to-start-again

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

答案 2 :(得分:4)

尝试创建符号链接:

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

答案 3 :(得分:0)

我在与Orange Pi RK3399混在一起试图从Linux Mint刷新固件时遇到了此错误。该Pi的解决方案是手动的,并给出了以下命令:

sudo apt-get install git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev libssl-dev pv e2fsprogs build-essential fakeroot devscripts

不确定,但是libudev-dev应该足够,所以命令应该是:

sudo apt-get install libudev-dev

并非所有给定的软件包都是必需的。