LHa for UNIXSolaris8 for Intelで使う

LHa for UNIXは、Windowsでよくみかけるlzh拡張子の圧縮形式の操作をするツールです。 そいつを、Solarisで使えるようにしてみようというわけ。 WindowsでもSolarisでも一般的なZIP形式で圧縮すればよい、というのは本当の解決になってない。 できるようになる、というのが大事でしょ?

ソースコードの入手とコンパイル環境

Solarisのためのパッケージを探してみましたが、全然見つかりませんでした。 そのかわり、UNIX般用のソースコードが見つかりました。 私のマシンは開発環境をインストールしていないので、絶対トラブルが起こるとわかっていたから、誰かが親切にパッケージを作ってくれているのを期待したんだけど、みつかんねー。

というわけで、ソースをコンパイルすることに。 入手したアーカイブを展開してみると、一通り揃っていました。 早速Readmeファイルを読んでみる。 どうやらMakeファイルの対象は、FreeBDS3.1のようです。 以前まではSolarisみたいでした。 ひ、一足遅かったか〜。 また、最近流行のconfigureはないようです。 intのサイズとか、とっても心配。 動作はするだろうけど、ぎりぎりの動作でこけそうな予感。

Mozillaを動作させるために、gccは既にインストール済み。 すぐmakeしてみました...エラー。 そっか、makeって、インストールしないといけないんだねぇ。 てっきり環境にデフォルトで入っているのかと思ってた。 makeの最新版をダウンロードして、インストール。 うーん、私って結構なんでもそろっている環境にいたんだ、と今ごろ気づく。

makeすると、今度はstdio.hやらstring.hやら、めちゃくちゃ大事なファイルが無い、とgccに怒られました。 嫌な予感的中! ここいらへんで、時間がかかるのを覚悟。 こうやって、みんな強くなっていくんだね。 歴史を感じちゃうよ。

苛酷なコンパイル環境

私の場合、前述のように開発環境はインストールされていません。 でも、gccmakeをインストールしているのだから、コンパイルできるのだと思っていました。 しかしこれは大きな間違いで、開発環境インストールにはシステム用のC言語のヘッダーも含まれているのでした。 むぅ。 そこで、C言語用のヘッダーだからSUNWlibCとかSUNWlibCfという名前なんだろうと、勘でパッケージをインストールしてみました。

結果、全然だめでした。 ああ、困った。 このままでは埒があかないので、勘ではなく根気良くインターネットで情報を探すことに。

なんとかC言語用のシステムのヘッダーのパッケージを突き止めました。 SUNWheaという名前のようです。 SolarisSoftwareCDに入っていました。 そして、SUNWheaをインストール。 make。 見事にエラー。 今度はasが実行できないというものでした...アセンブラか。

コンパイルとは

私はてっきり、gccに付属しているアセンブラ(gas)で大丈夫だと思ってました。 けど、Solarisはだめなんだねぇ。 今回のソースはC言語だけど、やっぱりアセンブラは必要なわけよ。 クロスコンパイルするならgas使うんだろうけど、今はネイティブなんで。

  1. 前処理 - プリプロセッサ(cpp)がソースを解析して、.cのマクロを処理したソースを生成する。
  2. コンパイル - コンパイラがプリプロセッサの出力を入力として、アセンブラのソースコードを生成する。
  3. アセンブル - アセンブラがコンパイラの出力を入力として、.o拡張子のオブジェクトファイルを生成する。
  4. リンク - リンカ(ld)がアセンブラの出力を入力として、.oのモジュールを実行ファイルに配置することで実行形式ファイルを生成する。
  5. 完了。

現在の全てのコンパイラはどうなっているのかわからないけど、少なくともgccは今でもこのプロセスを経ていると、自分で勝手に思ってます。 よく勘違いされている方がいるけど、ldはローダじゃないよ。 リンクエディタ(link editor)の略です。 ローダって、実行形式のファイルを実行したときにメモリにデータを配置する人のことだよ。

やっとこれで一目瞭然。 アセンブラはSolarisに付属しているパッケージのどこかにあるっ! と、またもや根気良くインターネットで情報収集する羽目に。 ああ、なんでDeveloperインストールしなかったんだろうと悔やみつつも、だんだんゴールが近づいている気がして嬉しかったりして。

やっとそろったコンパイル環境

調べたよ...根性で。 総合すると、どうやら以下のパッケージ群が必要のようです。 X Window SystemのやOpen Lookのヘッダーも含まれていたりします。 まあ気にせずインストールしましょう、ちょっと数が多いですけど。 途中説明が無いものは、私が見つけられなかったパッケージです。 参考にしたドキュメントには記述してあったんだけど、探しても見つからなかった。 それらは、インストールしていないです。

各パッケージのインストール後、念のため環境変数PATH/usr/ucbを追加してmake。 今度は完走したよ! 確認すると、確かにlhaなるファイルが生成されています。 通常make installすればインストールできるんだろうけど、できませんでした。 Solarisの常識が未だに良くわかっていないんで、何でだめなのかすらわからない。 結局、自分でlhaファイルを/usr/ucbにコピーしてしまいました。

使用してみて

lhaをオプションなしで実行すると、使用方法が出てきます。 試しにWindowsで生成したlzhファイルをSolarisで展開してみました。 むぅ...オッケー! 特に不具合は無いです。 規模がでかくなるといろいろ問題が出そうな雰囲気は残ったままだけど、そのときはWindowsで作業すればよいよね。

この作業にあたって、次のサイトを参考にさせて頂きました。 lha for Unixは、私がコンパイルして生成したバイナリファイルとダウンロードしたソースをまとめたものを置きますので、ライセンスに従って自由に使ってもらって結構です。


since 2001/12/12.
mail to nascent@mx11.freecom.ne.jp.
author nascent.
Level A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0 Valid XHTML 1.1! Valid CSS! Make Width CSS