0

我在 x86 上运行的 Ubuntu 12.04 上交叉编译了一个程序,使用gcc-arm-linux-gnueabibinutils-arm-linux-gnueabi编译arm-linux-gnueabi-gcc而不是gcc我的目标架构是 ARM。它编译良好,没有错误或警告。

当我尝试在 ARM 机器(Pandaboard - 也运行 Ubuntu 12.04)上运行它时,我得到:

bash: ./sttyl: No such file or directory

我知道该文件在那里并且它具有适当的权限:

-rwxrwxr-x 1 haziz haziz 8.5K Feb 10 10:34 sttyl

的输出file sttyl

sttyl: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31,BuildID[sha1]=0x6d504f7d84b93603122223a89e2b5960c840309f, not stripped

当我在 Pandaboard 上本地编译它时,它编译并运行良好。这是file sttyl本机编译副本的输出:

sttyl: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31,BuildID[sha1]=0x9897c785266c5b7cdf580e08091aba239db84ecf, not stripped

我究竟做错了什么?此外,如果我在交叉编译中犯了错误,我会期望 shell/内核有效地告诉我可执行文件适用于错误的架构,而不是它不存在!

4

1 回答 1

1

它并没有告诉你./sttyl不存在。

它告诉您它产生了一个新进程,该进程以 error 退出No such file or directory。没有提供有关丢失哪个文件或目录的信息。

例如,#!/bin/specialsh如果解释器/bin/specialsh丢失,一个以

尝试使用strace找出导致错误的调用(和路径)。

于 2013-02-10T16:25:09.587 回答