[Armadillo:01443] Re: セルフコンパイルについて

Yasushi SHOJI email@hidden
2006年 12月 20日 (水) 11:54:14 JST


# 返事が遅くなってごめんなさい。

At Thu, 07 Dec 2006 21:29:35 +0900,
Takuro wrote:
[...]
> >> 過去ログを拝見しましたところ,ArmadilloにDebianを導入しapt-getで
> >> インストールするのか簡単だということですが,オリジナルのディストリビューション
> >> (atmark-dist)上でセルフコンパイル環境を構築することはできないのでしょうか?
> > 
> > できると思いますが、
> > 
> > - Atmarkでは用意していない
> > - 結構時間がかかる
> > 
> > と、思います。用意していない理由ですが、あまり利点を見いだせていない
> > からです。
> > 
> > たぶん見えていない理由があると思いますので、self compileを
> > 行ないたいと考える原因になったことを教えていただけますか?
> 
> 用意されていないということは,一般的に必要がないということなんだと思いま
> す。私に十分な知識がないために見当違いなことをいっているのかもしれません
> が,以下のように考えています。
> 
> 少し前にマガークさんの「Armadillo上で新しいプログラムを試す時」という投
> 稿の中で,既存のオープンソースのソフトウェアをクロスコンパイルする場合
> に,configureがクロスコンパイルに対応していない時が多い,という内容があ
> りましたが,そのような場合はセルフコンパイルしたほうが簡単なのではないか
> と思っています(現在,特にビルドに困っているパッケージがあるわけではない
> のですが)。

たしかにその通りですね。auto toolsはたしかに困っています。いろいろ試行
錯誤してはいるのですが、提供できる状態にはなっていません。

最終的に configureは defineを環境に応じて生成するものなので、現状では
手で defineを作ることで逃げています。一度作ってしまえば変らないものな
ので、下記にあるように Debian on Armadilloで configureだけ一度するとい
うのもありかもしれません。

> しかし,下記にある通りArmadillo上のDebianでコンパイルしたバイナリを
> atmark-dist上で実行できれば,atmark-dist上でのセルフコンパイルにこだわる
> 必要はないと思います。しかし,その場合は(毎回Debinaとatmark-distのシス
> テムを入れ替えるのが面倒なので)Armadilloが2台ないと不便なように感じます。

Debianは CF上に構築できますが、たしかに開発するarmadilloと動作確認する
Armadilloがある方が便利ですね。

ちなみに、みなさんが Armadilloを使ったシステムの開発では何台くらいの
Armadilloが使われるのでしょうか? 開発中だけ、設置する予定のArmadillo
に Debianを入れることはできますか?

> configureの問題は,PC上にArmadillo用のDebianの開発環境をマウントして,
> chrootを行うなどで解決するのでしょうか?

残念ながら試したことは無いのですが、chrootも一つの方法ですね。

> >> また,PCでのクロスコンパイルとArmadillo上のDebianあるいは(可能ならば)
> >> atmark-distでのセルフコンパイルで作成されたバイナリファイルは,全く同一の
> >> ものとなるのでしょうか?
> > 
> > 同一がどのレベルで同一なのかという問題があるのでなんとも言えませんが
> > 
> > - たぶん同じ挙動をするという意味で同一である
> > - 使用するcompilerのversionや、binutilsのversionによって
> >   オプティマイズのされかたが違うので、完全に同一ではない
> > - また、bugなどによっても異なるかもしれない
> > - タイムスタンプが入るようなcode(たとえばhermitとか)であれば
> >   どの環境でも全く同一にはならない
> > - リンクするライブラリは同じものを選べるので同一にすることは可能
> > 
> > です。armadillo用の xxxxx-arm-crossというパッケージは
> > debian用にコンパイルされたものを、そのままarmadillo上で
> > 使っています。armadillo系は debian用にコンパイルされた
> > バイナリをそのまま使えるようになっています。
> 
> 具体性に欠けていて申し訳ございません。
> 結局のところ,実行の結果が同じであれば良いのですが,やはりそれでもプログ
> ラムの内容によるということですね。

そうですね。複数の環境が異なっている場合は、機能の劣った(古い)方に合わ
せてコードを書かなければいけないので、たとえばコンパイラの新しい機能な
どは使えないことになります。

デバッグするときにそこに気がつければ良いのですが、わりと見落してしまい、
結局時間を無駄にしてしまうということも聞いたことがあります。
-- 
            yashi



armadillo メーリングリストの案内