0

我正在尝试设置 Eclipse IDE 以交叉编译 C++ 代码,该代码应该在基于 Arm 的 PandaBoard-ES 设备上运行。

我的机器运行 64 位 Fedora 20。我按照这个操作指南安装了 32 位版本的 glibc ( glibc.i686 ) 后,我能够构建“hello world”项目。

我的问题是,当我将二进制文件复制到 Pandaboard 设备(运行 Debian Jessie 3.16.0-armv7-x3)时,我无法执行它。(没有这样的文件或目录

有人可以给我一个提示吗?

编辑:

这是午夜指挥官二进制文件(来自 repos)和交叉编译的二进制文件的输出

PandaBoard3:~$ file /usr/bin/mc
  /usr/bin/mc: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=31c7410ced0a9b54f97a28e6cbabf97afd4ecee3, stripped

PandaBoard3:~$ file ./Pandaboard\ crosscompile 
 ./Pandaboard crosscompile: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped
4

2 回答 2

0

我认为您的 libc 或 ABI 不匹配。只需file在已编译的二进制文件和 Jessie 上的一些工作二进制文件上运行。你应该看到区别。

Fedora 不是 Debian 交叉编译软件的最佳发行版。你基本上有两种可能性:

  1. 以 Debian Jessie x86 作为开发主机。这样,您将在两个系统上拥有相同的 GCC、libc 等。在这里您可以阅读如何从 Emdebian 存储库安装工具链。也看看xapt。它将允许您安装交叉编译的依赖项,如 Qt、Boost 等。

  2. 采取一些“从头开始”的发行版,例如BuildrootYocto。这样的发行版将同时关注工具链和 rootfs,因此始终兼容。

于 2014-08-15T12:28:00.747 回答
0

这为时已晚,可能还很初级,但是您是否检查了您尝试运行的二进制文件的文件权限?运行 ls -alv 并检查文件是否为您的用户启用了执行权限。

于 2015-12-29T07:47:28.130 回答