okkyの日記: Porting application to Linux 1
日記 by
okky
なんか最近 Linux へアプリケーションを移植するのがはやっているらしい。
Solaris とか HP/UX から Linux へ移植するのだそうだ。
しかしちょっと待て。君たちは何をしようとしているのかわかっているのか?
この移植には、大雑把に言っても全部で3種類の変更が発生する。
1) Compiler : Solaris cc とか HP/UX cc から gcc に
2) Hardware : 大抵 big endian マシンを little endian マシンに
3) OS/kernel: Solaris とか HP/UX を Linux に
もし、一気に環境を移動しようとしたら、この3つの変更によるバグを一気に踏むことになる。大抵大混乱だろう。
こういう場合は、step by step で実行するのが筋と言うものだ。
a) まずコンパイラを gcc に移行する
-Wall, -Wextra などをつけて、徹底して Warning を取り去る。
実は、この段階でやっている事は「Solaris cc だから通っていた」類の記述ミスの除去。
つまりデバッグだ。
「それは動いているコードだから…」と一度でも言った事はないかね?
『何故だか判らないが動いている』なら、それはバグだ。そういう類をまずここで除去する。
b) HW platform を移行する
Solaris であれば、Solaris for x86 (Open Solaris でいいよ)に移行する。
この段階で endian 問題とか、32bit -> 64bit 問題とかを除去する。
c) OS を変更する
正確には、a, b と並行して「本当にOSを移行できるのか?」という検討を行う必要がある。
仮に機能的に不足があるなら、OS移植はしないほうが良い。
でも、a までくれば gcc の出すコードのおかげで少しは良い性能になっている。
b までくれば、HWコストが大幅に下がっているから、コストダウンはしているはずだ。
(というか、Open Solaris の場合、RHEL AS よりも安くならないか? 場合に拠っちゃ…)
だから、ここまでの作業は決して無駄ではない。
仮に、移植可能だとして、常に移植コストを見積もり続ける必要がある。
移植コストが得られるメリットに比べて割高になるようなら、移植作業は停止したほうが良い。
というわけで、このように。3段階に分けなさい、というのが fj の教祖様からのお達しでした(自作自演)。
Solaris とか HP/UX から Linux へ移植するのだそうだ。
しかしちょっと待て。君たちは何をしようとしているのかわかっているのか?
この移植には、大雑把に言っても全部で3種類の変更が発生する。
1) Compiler : Solaris cc とか HP/UX cc から gcc に
2) Hardware : 大抵 big endian マシンを little endian マシンに
3) OS/kernel: Solaris とか HP/UX を Linux に
もし、一気に環境を移動しようとしたら、この3つの変更によるバグを一気に踏むことになる。大抵大混乱だろう。
こういう場合は、step by step で実行するのが筋と言うものだ。
a) まずコンパイラを gcc に移行する
-Wall, -Wextra などをつけて、徹底して Warning を取り去る。
実は、この段階でやっている事は「Solaris cc だから通っていた」類の記述ミスの除去。
つまりデバッグだ。
「それは動いているコードだから…」と一度でも言った事はないかね?
『何故だか判らないが動いている』なら、それはバグだ。そういう類をまずここで除去する。
b) HW platform を移行する
Solaris であれば、Solaris for x86 (Open Solaris でいいよ)に移行する。
この段階で endian 問題とか、32bit -> 64bit 問題とかを除去する。
c) OS を変更する
正確には、a, b と並行して「本当にOSを移行できるのか?」という検討を行う必要がある。
仮に機能的に不足があるなら、OS移植はしないほうが良い。
でも、a までくれば gcc の出すコードのおかげで少しは良い性能になっている。
b までくれば、HWコストが大幅に下がっているから、コストダウンはしているはずだ。
(というか、Open Solaris の場合、RHEL AS よりも安くならないか? 場合に拠っちゃ…)
だから、ここまでの作業は決して無駄ではない。
仮に、移植可能だとして、常に移植コストを見積もり続ける必要がある。
移植コストが得られるメリットに比べて割高になるようなら、移植作業は停止したほうが良い。
というわけで、このように。3段階に分けなさい、というのが fj の教祖様からのお達しでした(自作自演)。
あと、 (スコア:1)