bla*_*ter 5 terminal executable cross-compilation kali-linux
我正在尝试运行一个i686-elf-gcc
在我的 Kali Linux 中调用的可执行文件,我从这个存储库下载了该文件。这是一个交叉编译器。问题是,即使终端和我编写的脚本都可以看到该文件存在,但在实际执行它的时候我得到了
No such file or directory
错误。这是一个解释它的图像:
我还必须说,我已授予可执行文件必要的权限。
通常,“无法执行...没有这样的文件或目录”意味着可执行二进制文件本身或它需要的库之一不存在。库本身也可能需要其他库。
要查看指定的可执行文件或库所需的库列表,可以使用以下ldd
命令:
$ ldd /usr/local/bin/i686-elf-gcc
Run Code Online (Sandbox Code Playgroud)
如果结果列表包含类似的行
<library name> => not found
Run Code Online (Sandbox Code Playgroud)
然后可以通过确保已安装提到的库并在库搜索路径中来解决问题。
在这种情况下,库可能位于/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
Run Code Online (Sandbox Code Playgroud)