我在 x86 上运行的 Ubuntu 12.04 上交叉编译了一个程序,使用gcc-arm-linux-gnueabi
和binutils-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/内核有效地告诉我可执行文件适用于错误的架构,而不是它不存在!