运行可执行文件:没有这样的文件或目录

运行可执行文件:没有这样的文件或目录

i686-elf-gcc我正在尝试运行我从 Kali Linux 下载的可执行文件这个存储库。它是一个交叉编译器。问题是,即使终端和我编写的脚本都可以看到该文件存在,但当实际执行它时,我会收到 No such file or directory错误。这是解释它的图像:

在此输入图像描述

我还必须说,我已授予可执行文件必要的权限。

答案1

通常,“无法执行...没有这样的文件或目录”意味着可执行二进制文件本身或它需要的库之一不存在。图书馆本身也可能需要其他图书馆。

要查看指定可执行文件或库所需的库列表,可以使用以下命令ldd

$ ldd /usr/local/bin/i686-elf-gcc

如果生成的列表包含类似以下的行

<library name> => not found

那么可以通过确保上述库已安装并且位于库搜索路径中来解决问题。

在这种情况下,库可能位于/usr/local/lib/usr/local/lib64,但由于某种原因,该目录未包含在库搜索路径中。

如果您希望额外的库仅可用于特定程序或会话,则可以使用 LD_LIBRARY_PATH 环境变量来标识应搜索缺失库的额外路径。这将最大限度地减少与系统默认库发生冲突的可能性。

但是,如果要将库目录添加到系统默认库搜索路径,则应将其添加到/etc/ld.so.conf文件中,或者创建/etc/ld.so.conf.d/*.conf您选择的文件,然后ldconfig以 root 身份运行命令来更新库搜索缓存。

例如,如果在其中找到缺少的库/usr/local/lib64并且/etc/ld.so.conf.d目录存在,您可能需要创建crosscompiler.conf如下文件:

# echo "/usr/local/lib64" > /etc/ld.so.conf.d/crosscompiler.conf
# ldconfig

相关内容