5

システムに Boost 1.42 をセットアップしようとしています。gcc を使用して通常の x86 アーキテクチャ用にコンパイルするには Boost が必要で、Texas Instruments の ARM プロセッサ用にはクロス コンパイルが必要です。

ARM プロセッサのツールチェーンは gcc に基づいています。gcc、ar、ranlib などのツールにはすべて、arm_v5t_le- というプレフィックスが付いています。クロス コンパイルに関するドキュメントは多少限られていますこれが私が行ったことです: user-config.jam ファイルに以下を追加しました: using gcc : arm : arm_v5t_le-g++ ;Bjam は、次のように Makefile から呼び出されます: bjam toolset=gcc-arm --toolset-root=/opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/bin <some other options>ARM プロセッサ用にコンパイルし、次のようbjam toolset=gcc <some other options>に x86 プロセッサ用にコンパイルします。オプション --toolset-root についてはこちらで説明しています。

次の問題に遭遇しました: ARM プロセッサ用のアプリケーションをビルドすると、次のリンカ エラーが発生します: libboost_system-mt.a: シンボルを読み取れませんでした: アーカイブにはインデックスがありません。ranlib を実行して追加します。アーカイブで arm_v5t_le-ranlib を実行した後、問題なくリンクします。私の推測では、bjam は arm-v5t_le-ar の代わりに ar を使用しています。どのアーカイバーを使用する必要があるかを bjam に伝えるにはどうすればよいですか?

メーリング リストでは user-config.jam にも指定するように言われましたが<archiver>、残念ながら動作しないようです。同じリンカーエラーが発生します。

ありがとう。

4

1 に答える 1

3

BoostのCMakeベースのビルドを試してみてください。これにより、BJamよりもクロスプラットフォームのビルドを実行できる可能性があります。少なくとも私はそれで成功しました(しかし私はARMを試したことがありません)。

于 2010-02-23T10:09:32.453 に答える