以前 tcltklib というものを作って, 一部の人を混乱に陥れてしまった(?) 重弘です. 御無沙汰しております. (tcltklib は, その後, いろいろと修正していただいたみたいで, 本当にあり がとうございます.) さて, 先日, 研究室に Digital UNIX を積んだ VT-Alpha (Alpha の互換機) が来たので, 「まず始めに ruby を作らなければ !!」 と思い, いろいろと悪戦苦闘したので, その顛末を報告しておきます. ついで に, 一つお願いもあります. マシン: VT-Alpha600H/U OS: 箱には Digital UNIX と買いてあります. config.guess を実行すると, alphaev56-dec-osf4.0e を返します. ruby: ruby-1.2.3-stable 1. とりあえず, OS 附属の cc を使ってコンパイルしてみる. -> 失敗. システム附属のヘッダファイルの中に未定義マクロがあったため. (なんじゃそりゃ??) 2. その未定義マクロを定義しているヘッダファイルを読み込むように ソースを直してコンパイル -> 失敗. __( ) というマクロが /usr/include/standard.h でも定義されていたため. (ruby.h の定義とかちあっている.) 3. 二重定義しないようにソースを直して(ごまかして)コンパイル. -> miniruby 実行中に落ちる. (メッセージは忘れました.) !!! cc によるコンパイルを断念 !!! 4. 気を取り直して gcc を作る. 5. gcc でコンパイルしてみる. -> コンパイルは OK. しかし, tcltklib のサンプルが実行できない. -> モジュールのダイナミックローディングがうまくいかない. 6. コンパイル時の画面出力を調べると, ld -L/usr/lib -L/usr/local/lib -o tcltklib.so tcltklib.o \ -ltk8.0jp -ltcl8.0jp - lX11 -lm -lc ld: Error: Undefined: (以下略) のあたりが怪しい. 7. man ld して, 英語の雰囲気を眺めて (^^;; ld には -shared が必要なのでは と検討をつける. 8. ext/tcltklib で ld -shared ... として手でコンパイルしてみる. -> ダイナミックローディングもうまくいくようだ. 9. configure を眺めて, LDSHARED を定義しているあたりに osf*) LDSHARED='ld -shared' ;; というのを加えて, 最初からコンパイルしてみる. -> !!! 今度こそ OK. !!! 以上です. で, お願いというのは, 次回のリリース時からは configure に Digital UNIX 用の記述もいれていただけないかと. (私は, 上の例でうまく行っているような気がするのですが, 「osf*)」 では 他の OS の方が困るとか, 「-shared」 は違うとかいうのであれば, 適当に修 正していただければ幸いです.) ---- Ditigal UNIX/Alpha というのは, そんなにマイナーな組合せではないと思っ ていたのですが, 他に, ruby を使っている方はいらっしゃらないのでしょう か? (それとも, 私のマシンがおかしいのだろうか??? 来たばっかりなのに...) もし, 「私は普通に Digital UNIX で ruby 作ったよ」という方がいらっしゃ れば, 情報ください. ---- 重弘裕二 大阪工業大学工学部電気工学科 (sigehiro / ee.oit.ac.jp)