AC3D-没有那个文件或目录

AC3D-没有那个文件或目录

我刚刚下载了 AC3D,并将 zip 文件解压到我的主文件夹中。我打开了一个终端,使用 CD 转到该文件夹​​并输入./ac3d。但我每次都会收到以下错误消息:

bash: ./ac3d: No such file or directory

但文件显然在那里!我已经让它可运行了,所以也不可能是这种情况。任何帮助都将不胜感激!

提前致谢!

编辑1: @TheSchwa 我做到了。而且它出现了,所以是的,它确实被识别了。

@Nephente 给你。输出为ls -l ac3d

-rwxrwxrwx 1 ruben ruben 3758400 mei  1 23:34 ac3d

输出为head -1 ac3d(缩写)

ELF@�   4�T94(44�4�44�4���o27o27@7����|_h�7h0h088HH�H�  P�td\�4\(\(PPQ�td/lib/ld-linux.so.2GNU �[...]

编辑2

输出dpkg --print-architectureamd64

输出dpkg --print-foreign-architecturesi386

答案1

问题是,二进制文件是 32 位可执行文件,而您运行的是 64 位 Ubuntu。这不是问题,因为 Ubuntu 支持多种架构。

如果对可执行文件或任何文件的性质有疑问,可以使用以下命令

file <filename>

提供了有价值的信息。如果该命令不可用,可以通过

sudo apt-get install file

在这种情况下,它告诉我们其他信息

ac3d: ELF 32-bit LSB executable[...]
interpreter /lib/ld-linux.so.2

解释器是负责加载二进制文件运行所需的所有共享库的软件。如果缺少解释器,应用程序就无法运行。

32 位和 64 位可执行文件需要不同的解释器和不同版本的共享库。幸运的是,Ubuntu(或更准确地说是 Debian)不久前推出了非常复杂的多架构支持[cit. 需要]

为了确保软件包系统已为其他体系结构做好准备,可以使用以下命令查看系统默认体系结构:

dpkg --print-architecture

在 64 位 Ubuntu 上,这将默认为amd64

dpkg --print-foreign-architectures

打印出软件包系统支持的所有其他体系结构。对于 32 位支持,输出必须包含i386。如果没有,可以使用以下命令添加支持

sudo dpkg --add-architecture i386

之后需要更新软件包列表

sudo apt-get update

现在可以使用以下方式安装 i386 版本所需的库或软件包:

sudo apt-get install <package>:i386

更具体地说,要安装所需的解释器,安装指示如下GNU C Shared Library

sudo apt-get install libc6:i386

在许多情况下,这将使相关二进制文件执行,但当然,应用程序可以动态链接许多库,即依赖这些库。这些库需要以相同的方式安装。如果缺少库,链接器将在执行时给出错误

./ac3d: error while loading shared libraries: libGLU.so.1: \
cannot open shared object file: No such file or directory

此时需要查找哪个包包含此缺失文件。如果本机体系结构中已安装相应的包,则可以使用 vi a 搜索dpkg

dpkg -S libGLU.so.1
libglu1-mesa:amd64: /usr/lib/x86_64-linux-gnu/libGLU.so.1

因此我们需要安装libglu1-mesa:i386。重复此操作,直到满足所有依赖关系。

但通常系统中完全没有图书馆。在这种情况下,人们可以搜索Ubuntu 的在线软件包数据库,或者安装实用程序apt-file并执行

apt-file search <filename> 

可以找到一个关于 Debian 多架构支持的非常好的 HOWTO(Ubuntu 也一样)这里

额外的:该软件包binutils包含一些非常实用的工具来检查二进制文件。特别是它包含ldd(列出动态依赖项)实用程序。它列出了二进制文件运行所需的所有动态库。

例子:

ldd ac3d

生产

linux-gate.so.1 (0xf77b7000)
libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xf76ee000)
libGLU.so.1 => not found
libGL.so.1 => not found
libpng12.so.0 => /lib/i386-linux-gnu/libpng12.so.0 (0xf76c0000)
libXmu.so.6 => not found
libXext.so.6 => not found
libX11.so.6 => not found
libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xf76ba000)
libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xf769e000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf75ac000)
libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xf7566000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7549000)
libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xf739e000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf7381000)
/lib/ld-linux.so.2 (0xf77ba000)

这样就可以快速找出系统缺少哪些库。

相关内容