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