我已经下载并解压了黑盒 PDDL 规划器,我试图让blackbox
文件执行。我切换到包含该文件的目录并尝试./blackbox
,结果出现了权限错误。没什么大不了的,只需运行chmod 755 blackbox
以授予其可执行权限即可。但是,当我./blackbox
再次尝试时,出现了以下错误:
bash: ./blackbox: No such file or directory
当我给出命令参数时,它也会这样做。ls -l
但是当我运行时,我看到了blackbox
文件并且它有-rwxr-xr-x
权限,所以我不确定为什么它会“丢失”文件。
如果重要的话,我正在运行 Ubuntu 14.04 和 Windows 7 双启动。
编辑:我发现了一个有帮助的问题在 Superuser 上,它部分帮助了我。我跑去readelf -l ./blackbox | grep ld-linux
寻找我需要的东西,然后进行了包内容搜索,发现我需要这个libc6-i386
包。现在我可以执行以下操作:
user@ubuntu:~/path$ ./blackbox
./blackbox: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
user@ubuntu:~/path$ ldd blackbox
linux-gate.so.1 => (0xf77af000)
libstdc++.so.6 => not found
libm.so.6 => /lib32/libm.so.6 (0xf774f000)
libgcc_s.so.1 => not found
libc.so.6 => /lib32/libc.so.6 (0xf75a4000)
/lib/ld-linux.so.2 (0xf77b0000)
答案1
事实证明,blackbox
可执行文件是 32 位程序,而我运行的是 64 位操作系统。以下是我为解决此问题所采取的(有些不规范的)步骤(部分记录在超级用户上的这个问题):
uname -m
告诉我我有一个 64 位操作系统,但file blackbox
告诉我这个 exe 是 32 位的。ldd blackbox
(奇怪的是)告诉我该文件不是动态可执行文件,尽管我也从中看到了这一点file
。尝试readelf -l ./blackbox | grep ld-linux
告诉我[Requesting program interpreter: /lib/ld-linux.so.2]
,这是一个共享库,而我在那个位置没有这个库。sudo apt-get install libc6-i386
获取该库文件(发现使用包搜索packages.ubuntu.com)。- 现在
ldd
给了我输出,但我缺少libstdc++.so.6
(libgcc_s.so.1
参见我的编辑),所以我需要获取这些文件。 - 在搜索了更多软件包之后,我发现
gcc-snapshot
软件包中有我缺少的两个文件。这可能是一把巨大的锤子,却打不中我的小钉子,而且可能还有更好的解决方案,但它sudo apt-get install gcc-snapshot
让我得到了我需要的文件。 - 再次运行后
ldd
,此问题得到解决libgcc_s.so.1
,但libstdc++.so.6
仍然未找到。我最终去了ldd
找到libgcc_s.so.1
并运行的地方sudo ln -s /usr/lib/gcc-snapshot/lib32/libstdc++.so.6 libstdc++.so.6
以获取最近安装的文件的符号链接。