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

Rau*_*ulp 12 linux shared-libraries 32bit-64bit i386 ubuntu-12.04

我试图运行一个使用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已安装(见下图)

关于Synaptic Manager的libudev 我可以找到它/lib/x86_64-linux-gnu/libudev.so.0.

可能有什么不对?

Ant*_*nko 7

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

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

dpkg --add-architecture i386
Run Code Online (Sandbox Code Playgroud)

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

  • 使用ldd一次查看所有依赖项(以及缺少的内容)
  • 安装容易,文件并运行apt-file update,这样你就可以通过文件名查找包的名称,即使包当前未安装(是这样的:apt-file search /libudev.so.0)

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


Isa*_*eal 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
Run Code Online (Sandbox Code Playgroud)