というわけで、クロスコンパイルの方法を。
環境はLinux(Ubuntu + ターゲットの開発環境)
流れは
- ダウンロードと展開
- bjamの作成
- user-config.jam の書き換え
- bjamの実行
です。
ダウンロード
ダウンロードは、boost.org から持ってきます。
今回は、とある事情から1.43.0を使いますが、たぶんどれでも大丈夫(だとおもう)
ダウンロードしたら、展開してください
- tar zxvf boost_1_43_0.tar.gz
とかでいいと思います。
bjamの作成
展開できたフォルダに移動して、bootstrap.sh を実行します。
作業場所では、いつも話題に上がりますが、
boostrap ではなく bootstrapですw
- cd boost_1_43_0
- ./bootstrap.sh
といった感じ。
user-config.jam の書き換え
今回は、クロスコンパイル用の g++ を使うので、そういう感じに書き換えます。
まず、user-config.jam の場所ですが、
<展開したboost>/tools・build/v2/user-config.jam
です。
適当なテキストエディタでファイルを開いて、編集準備を。
といっても、書き方がいろいろ書いてあるので、それに沿って書いていきます。
書式は
- using msvc : [version] : [c++-compile-command] : [compiler options] ;
今回は、g++ を差し替えるだけなので、gcc のデフォルト設定を上書きする感じ?
- gcc : 4.2 : <クロスコンパイル環境のパス>g++ ;
こんな記述を追記します。
そのほかにも、いろんな環境の設定が書いてあるので、眺めるのもいいと思います。
ビルドツールのマニュアルは、ここ(Boost.Build V2 User Manual)
クロスコンパイルの設定は、このあたり
bjamの実行
最後に、bjamを実行して、モジュールを作りましょう。
今回は、組み込み環境に突っ込むので、staticライブラリにします。
bjamの設定は、
- ./bjam –help
とかで確認できます。
今回は、インストールする場所を、ターゲット環境元のファイルがあるところへ
- sudo ./bjam --prefix="<ターゲット環境>/usr/local" --without-python --without-mpi link=static runtime-link=static threading=multi install
解説ですが、
sudoはインストール先のアクセス権が無いから。
--prefix="<path>" でインストール先を指定
--without-python は、pythonを動かす予定がないのと、ターゲットにもpythonいれないし・・・
--without-mpi は指定しなくても勝手に外れますが、メッセージが気になるので。
link=static でスタティックライブラリ
runtime-link=static でC、C++関連のライブラリもスタティックリンクします
threading=multi でマルチスレッド対応に。
install をつけて、出来あがったバイナリをインストールします。
まとめ
と、これで、出来あがったデータを使って、実行ファイルまで作成できることを
確認しましたが、実機上で動くかは、明日にでも確認できるかなぁ。
自分がよくわかってないことで、ar(アーカイバ?)って、クロスコンパイルのときも
Linuxのgccのやつをそのまま使ったりしてたりするけど、
クロスコンパイルの方のツールにも、専用っぽいやつがあるんだよね。
仕組みとして、ライブラリに変換するだけで、ライブラリのフォーマットは、
Linuxなら同じだから大丈夫とか、そういう理屈なんだろうか。気持ち悪い
動かなかったらまたいろいろ疑わないといけないなぁ
0 件のコメント:
コメントを投稿