交叉编译为ARM:错误没有找到这样的文件或目录/命令

我编写了简单的Hello World程序,并使用gcc-arm-linux-gnueabi编译器进行编译。 它编译得很好,但是当我尝试在ARM机器上执行它时,它抱怨“没有这样的文件或目录”。 我认为gcc-arm-linux-gnueabi仅适用于嵌入式Linux,因为e(mbedded)abi。 它与ARM Linux ABI不同吗?

请帮我解决这个问题

代码在这里

#include "stdio.h"

int main(void) {
  printf("Hello world !n");
  return 0;
}

编译为

arm-linux-gnueabi-gcc -Wall -o crosscomp hello.c

当我在目标上执行这个crosscomp时,ARM机器错误是crosscomp没有这样的文件或目录

编辑当我使用arm-linux-gnueabi-gcc时,入口点与目标机器入口点(readelf -l crosscom)不匹配,但是当我使用与目标机器匹配的aarch64-linux-gnu-gcc入口点进行编译时。 但是现在错误变成了./crosscomp上的权限被拒绝。 我用sudo说crosscomp:没有这样的命令。

注意我在askubuntu上发布了同样的问题https://askubuntu.com/questions/904685/cross-compilation-for-arm-error-no-such-file-or-directory,但没有得到任何回应。

readelf的输出如下

ELF标题:

 Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           AArch64
  Version:                           0x1
  Entry point address:               0x400470
  Start of program headers:          64 (bytes into file)
  Start of section headers:          4488 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         8
  Size of section headers:           64 (bytes)
  Number of section headers:         29
  Section header string table index: 26

当特定可执行文件所需的动态加载程序缺失时,会发生此特殊错误消息。

通过将readelf应用于问题可执行文件,您可以找到所需的动态加载器的名称。 例如,在我的x86-64 Linux机器上

$ readelf -l /bin/ls | grep 'program interpreter'
  [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]

(“程序解释器”是“动态装载器”的另一个名称。)

因此,在您的开发框中对您的crosscomp二进制文件运行上述命令。 (如果您没有readelf或者您收到错误消息,请尝试arm-linux-gnueabi-readelf 。)以“program interpreter:”命名的文件需要存在于目标ARM计算机上。 如果你不知道从哪里得到它,请将上面命令的输出+ ls -l放在应该丢失文件的目录中。

链接地址: http://www.djcxy.com/p/86927.html

上一篇: cross compilation for ARM: error no such file or directory/command not found

下一篇: Why doesn't arm