执行程序给出“没有这样的文件或文件夹”错误

执行程序给出“没有这样的文件或文件夹”错误

我无法执行简单的可执行文件。

的结果ll

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ ll
total 16948
drwxr-xr-x 2 user user    4096 avril 18  2014 ./
drwxr-xr-x 8 user user    4096 janv. 18 21:01 ../
-rwxr-xr-x 1 user user  565152 avril 18  2014 armv5-ctng-linux-gnueabi-addr2line*
-rwxr-xr-x 2 user user  589764 avril 18  2014 armv5-ctng-linux-gnueabi-ar*
-rwxr-xr-x 2 user user 1035780 avril 18  2014 armv5-ctng-linux-gnueabi-as*
-rwxr-xr-x 2 user user  624784 avril 18  2014 armv5-ctng-linux-gnueabi-c++*
lrwxrwxrwx 1 user user      28 avril 18  2014 armv5-ctng-linux-gnueabi-cc -> armv5-ctng-linux-gnueabi-gcc*
-rwxr-xr-x 1 user user  563424 avril 18  2014 armv5-ctng-linux-gnueabi-c++filt*

这就是我执行的方式armv5-ctng-linux-gnueabi-ar

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ ./armv5-ctng-linux-gnueabi-ar

这给出了

No such file or folder

每个文件末尾的 * 是什么意思——有什么特别的吗?

编辑

@Arkadiusz Drabczyk 提出的 manip:

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ readelf -a armv5-ctng-linux-gnueabi-ar | grep "Requesting program interpreter:"
  [Requesting program interpreter: /lib/ld-linux.so.2]

@steeldriver 支持的 manip:

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ arch
x86_64

我正在使用 64 位操作系统。

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ file armv5-ctng-linux-gnueabi-ar
armv5-ctng-linux-gnueabi-ar: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, BuildID[sha1]=8dac66869f5be2dbb2bee517e289901c4be80db5, stripped

该二进制文件似乎适用于 32 位架构ELF 32-bit

答案1

任何帮助,每个文件末尾的 * 是什么意思,有什么特别的吗?

您的ll别名可能包含-F在文件名后添加字符的选项。从man ls

   -F, --classify
          append indicator (one of */=>@|) to entries

在许多 shell 中,bash您可以使用命令检查别名是如何扩展的type。例如,在我的系统上:

$ type ll ll is aliased to 'ls -Alhtr --color'

现在,您说给您带来错误的文件是二进制文件,因此可能是由于加载程序不正确造成的。尝试它请求的加载程序并确保您拥有它:

$ readelf -a armv5-ctng-linux-gnueabi-ar | grep "Requesting program interpreter:"

如果二进制文件被指定在x32系统上运行,它将请求一个x32解释器/lib。如果没有,它将无法启动。所以现在,根据您使用的系统,您需要找到一种方法来向您的系统添加 32 位兼容层。例如,Ubuntu它很简单 - 只需一个apt-get install即可完成这项工作,因为Slackware它的描述如下:http://docs.slackware.com/slackware:multilib

相关内容