パスワードを忘れた? アカウント作成
508652 journal

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 の教祖様からのお達しでした(自作自演)。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

読み込み中...