我在从 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 的格式。有可能的话,看一下这里。