【问题标题】:Cross Compiled Binary Does Not Exist?交叉编译的二进制文件不存在?
【发布时间】:2013-02-10 16:16:26
【问题描述】:

我使用 gcc-arm-linux-gnueabibinutils-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/内核有效地告诉我可执行文件适用于错误的架构,而不是它不存在!

【问题讨论】:

  • 您可能遇到了动态链接器或 C 库的问题。试试readelf -a your_program 并寻找“请求程序解释器”。

标签: c linux gcc arm cross-compiling


【解决方案1】:

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

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

例如,如果解释器 /bin/specialsh 丢失,则以 #!/bin/specialsh 开头的 shell 脚本可能会生成该错误,即使该脚本存在并且可执行。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 2020-05-03
    • 2021-02-23
    相关资源
    最近更新 更多