0

Arm ベースの PandaBoard-ES デバイスで実行する必要がある C++ コードをクロスコンパイルするために Eclipse IDE をセットアップしようとしています。

私のマシンは 64 ビットの Fedora 20 を実行しています。このハウツーに従い、32 ビット バージョンの glibc ( glibc.i686 ) をインストールした後、「hello world」プロジェクトをビルドすることができました。

私の問題は、バイナリを Pandaboard デバイス (Running Debian Jessie 3.16.0-armv7-x3 ) にコピーすると、実行できないことです。(そのようなファイルやディレクトリはありません)

誰かが私に何をすべきかヒントを教えてください。

編集:

これは、ミッドナイト コマンダー バイナリ (リポジトリから) およびクロスコンパイルされたバイナリのファイルの出力です。

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 用のソフトウェアをクロスコンパイルするのに最適なディストリビューションではありません。基本的に 2 つの可能性があります。

  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 に答える