我使用gcc-arm-linux-gnueabi
和binutils-arm-linux-gnueabi
在x86上运行的Ubuntu 12.04上编译了一个程序,并使用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 /内核有效地告诉我可执行文件是错误的架构而不是它不存在!
答案 0 :(得分:1)
没有告诉你./sttyl
不存在。
它告诉你它产生了一个新进程,退出时出现错误No such file or directory
。没有提供有关缺少哪个文件或目录的信息。
例如,如果缺少解释器#!/bin/specialsh
,则以/bin/specialsh
开头的shell脚本可能会生成该错误,即使该脚本存在且可执行。
尝试使用strace
找出导致错误的调用(和路径)。