2006年5月14日の日記の2番目の記事へのコメント

遅いセルフビルドを何とかする話

別にZaurusに限った話ではないんですが,クロスコンパイラがちゃんと用意できる環境であっても,クロスコンパイルせずにネイティブ環境でビルドするのはやっぱ楽だと認識しています.確かに貧弱なマシン用の実行バイナリ作る場合,高性能なデスクトップとかでクロスでばりばりやるのが速くて快適ではありますが,ひとたび configureが全然通らんとか(中でライブラリの有無を確認するのにビルドして実行とかしちゃったりしてるとか),makeでできるファイルの一部はネイティブ実行できないとまずいとか(bootstrapとでもいうのか?),そういうのに遭遇するとクロスはほんと辛いです.あ,パッケージを使って環境を作らない,という前提の話ですよ?もしくは「俺がパッケージャだ」みたいな話(笑)

そんなわけで(?),ここんとこずっとセルフビルドしてるわけですが,貧弱な環境でのセルフビルドの弱点はやっぱ遅さとメモリの足りなさですねぇ.遅いのは我慢できるとしても,メモリ不足はかなり痛いです.ものすごい勢いでswapした挙げ句,g++がセグって落ちるとかもうね・・・.

で,一昨日Qtを再コンパイルしようとしたらこの問題が出たんで,これを何とかできんのかとちょっと考えてみたという話です(前置きが長いな・・・).何を考えたかというと,このときの経験を元に以下のようなことを・・・.

  1. gccやg++の引数やオプションを見て,「-c」がついている場合には,「-E」に置き換えて出力ファイル名も変更してマクロの展開とかヘッダの取り込みとかだけやる
  2. 出力ファイルをクロス環境のあるところにscpなりrcpなりでコピー
  3. クロス環境の方にrshなりsshなりで入って,クロスコンパイラでさっきの出力ファイルを今度は「-c」をつけてコンパイル
  4. 終わったらできたファイルをscpでローカルに持ってきて,本来の出力ファイルとして置く

と,まあ,要するに,configureはネイティブにでやって,その後もプリプロセッサのところとリンカのところはセルフでやって,オブジェクトファイル作るところだけはクロスでやってしまおうという話です.実に単純なアイディアなんで,単に自分が知らないだけでその道の方々のところでは当り前のように使われてるんじゃないかという気もしますが(あるいは自分のgccへの理解が間違っててこれじゃ全然うまくいかないとか),クロス環境があって,ラッパーが用意できればそれで試せる話なんで早速やってみることにしました.

まずはOpenZaurus用のクロス環境を構築.実はこれがあってOpenZaurus用のクロスのglibcを入れようと思い,monotoneなんかを入れてしまったのが昨日の話.何で配布されているSDK使わないかって?そりゃぁ,セルフとgccのバージョン揃えたいからですよ(^^;. そしてまたしてもgccのsoft-float回りではまりました(^^;;;

で,クロス環境が何とかできたんで,今日になってラッパーをちょこちょこっと書いてみることに.こっちは瞬時にできるだろうと思いきや,オプションを置き換える部分でひっかかりました(^^;.普通のオプションとか引数とかだけなら簡単なんですが,例えば間に空白が入ってるような引数があったりしたら・・・.ってことを考え始め悩みまくり.まあ,最終的にxargsを使うとうまくいくことがわかったんで,これを使うことに.

で,早速これを使ってQtをビルドですよ.う・・・.こ,これは・・・は,速い!狙い通り,g++でのビルドがもりもり進んでいきます(笑).これさえあればFirefoxのビルドも恐くないぞ!・・・で,ちゃんと動くのかな,このバイナリ・・・動いたーヽ(゜∀゜)ノ.そしてビルドし直したことにより,ばっちりimmodule-qt介してuimで入力できるようになりました.何か前は最初から「-DQT_NO_XINERAMA」付けずにビルドしたのがまずかったみたいです.めでたいなこりゃ.

お名前:  メールアドレス(省略可):
メールアドレスも表示されます
ここに名前その他を書いてはいけません: ここにメールアドレスその他を書いてはいけません:

2006年5月14日の日記の2番目の記事へのコメント

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2006年5月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ