无法在 Ubuntu 17.10 上执行二进制文件

无法在 Ubuntu 17.10 上执行二进制文件

我在从 GUI 和命令行执行二进制文件时遇到问题。我正在运行 Ubuntu 17.10 。这是日志:

julien@julien-PC:~/JEUX/ROMS/Logiciels/snes9x-1.53$ ls
data  docs  snes9x-gtk
julien@julien-PC:~/JEUX/ROMS/Logiciels/snes9x-1.53$ ./snes9x-gtk 
bash: ./snes9x-gtk: Aucun fichier ou dossier de ce type

PS:最后一行是法语,但意思是“没有这种类型的文件或目录”。

我从 Humble Bundle 下载的 Super Meat Boy 安装程序也有这个问题。

更新 : 使用file,我有:

julien@julien-PC:~/JEUX/ROMS/Logiciels/snes9x-1.53$ file ./snes9x-gtk 
./snes9x-gtk: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.9, not stripped

我尝试了该命令/lib/ld-linux.so.2 ./snes9x-gtk(因为它是解释器)但没有找到。经过在互联网上的一些研究,我在包中找到了它lib32z1,安装后,当我重试该命令时,我得到了error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory。通过使用我的
命令作为输出:ldd

julien@julien-PC:~/JEUX/ROMS/Logiciels/snes9x-1.53$ ldd ./snes9x-gtk 
    linux-gate.so.1 =>  (0xf7f82000)
    libX11.so.6 => not found
    libdl.so.2 => /lib32/libdl.so.2 (0xf7f5b000)
    libXext.so.6 => not found
    libGL.so.1 => not found
    [...]
    libm.so.6 => /lib32/libm.so.6 (0xf7e54000)
    libgcc_s.so.1 => not found
    libc.so.6 => /lib32/libc.so.6 (0xf7c81000)
    /lib/ld-linux.so.2 (0xf7f84000)

有很多缺少的依赖项...
我尝试修复 libX11 和 libXext,但我遇到了问题:
我假设 libX11 在包中,libx11-6但在尝试安装它后,它说它已经安装了。 libXext 和 package 相同libxext-6

你有什么建议吗 ?谢谢。

答案1

这些是 32 位二进制文​​件;要让它们在 Ubuntu 系统上运行,您需要安装:i386软件包。该i386架构应该已经启用,但为了以防万一,运行

sudo dpkg --add-architecture i386
sudo apt update

然后安装缺少的库,例如

sudo apt install libx11-6:i386 zlib1g:i386

等。要查找包含您需要的库的包,请安装apt-file

sudo apt install apt-file
sudo apt-file update
apt-file search libX11.so.6

答案2

首先确定文件是什么:

file ./snes9x-gtk

并确保它的类型适合您的系统。例如,如果您有 32 位系统,这当然不会运行:

ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked...

如果类型正确,请尝试使用 进行调查ldd。这些是我能够弹出的一些错误:

$ ldd /usr/local/bin/tesseract
/usr/local/bin/tesseract: /usr/lib64/libstdc++.so.6: 
    version `GLIBCXX_3.4.11' not found 
    (required by /usr/local/lib/libtesseract_viewer.so.3)

$ ldd /usr/local/bin/qemu-system-x86_64
    ...
    libSDL-1.2.so.0 => not found
    ...

在这种情况下,您需要安装缺少的库(例如本示例中的 SDL)或获取该程序的更新版本。或者从源代码在您的系统上重新编译它。

更新:您似乎正在尝试执行 SNES ROM?您无法在非 SuperNintendo 系统上执行此操作。你需要一个模拟器这将了解该 ROM 的格式。有可能的话,看一下这里

相关内容