システムに 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>
、残念ながら動作しないようです。同じリンカーエラーが発生します。
ありがとう。