私が書いた大きなアプリケーションがあります。次のシナリオでアプリケーションを正常にコンパイルできます。
- Ubuntu 12.04を実行しているi386ホストのネイティブコンパイル
- Ubuntu 12.04を実行しているPandaBoardでネイティブ(これには長い時間がかかります)
- armhf PandaBoardターゲットのホストPCでQemuとchrootを使用(これには非常に長い時間がかかります)
i386ホスト上のアプリケーションをクロスコンパイルして、PandaBoardなどのターゲットで実行し、タイムリーにビルドを完了したいと思います。これまでのところ、リポジトリでarm-linux-gnueabihfツールチェーンを使用する試みは、正しく実行されないバイナリを生成しました。この段階では、ソフトウェアをパッケージ化する予定はありません。
クロスコンパイルを成功させるための推奨される方法は何ですか?
クロスコンパイラツールチェーンを使用したクロスコンパイルが機能するはずです。それが目的です。バイナリはどのように正しく動作しませんか?
—
ジル「SO-悪であるのをやめる」
私のバイナリはほとんどすぐに終了します。straceは、libc.so.6が期待される場所ではないことを示しているようです。
—
ジョナサン洞窟
それはリンクオプションによって修正できるはずです(どれがオフハンドかはわかりません)。ターゲットシステムはUbuntuを実行していますか?
—
ジル「SO-悪であるのをやめる」
はい、ターゲットもUbuntu 12.04を実行しています。コンパイラとリンカーに--sysrootオプションを使用する必要があるかもしれないと思っていましたが、これはUbuntuツールチェーンでは無効になっています。
—
ジョナサン洞窟
ツールチェーンは、12.04にちょうど機能します。私はちょうどamd64でそれをテストし、それがarmhfサーバーで作成したバイナリを正常に実行しました。しかし、i386ビルドマシンは手元にありません。それでも問題が解決しない場合は、詳しく説明する必要があります。lddは何と言っていますか?あなたはあなたの結論に至ったstraceから何を見ましたか?問題を明確に機能する単純なテストケースに縮小できるかどうかを確認し、実行している手順を詳細に説明します。
—
ロビーバサック