立石です。

Date: Sat, 24 Apr 1999 00:08:05 +0900 (JST)
From: Koji Arai <JCA02266 / nifty.ne.jp>
JCA02266> > 先ほどのruby-extの記事を見てruby-1.3.2 + tcl8.1b3 + tk8.1b3
JCA02266> > を動かしてみるとTcl_Init,Tk_InitでTCL_ERRORが返ってきてしまう
JCA02266> > のです。同じ現象に遭遇された方いらっしゃいますか?

すいません、Tk_Initの方のみでエラーでした。

JCA02266> 同じかどうか分かりませんが、tcl7.6jp、tk4.2jp、
JCA02266> ruby-1.2.5 で、会社のEWS48でTk_Initがエラーになり
JCA02266> ました。

原因がわかりました。Tclのライブラリの検索パスが原因のようです。
僕の場合libc5->glibc2への移行に伴い
/opt/local/lib/tcl8.1			(tcl8.1a1)
/opt/i586-pc-linux-gnulibc2/lib/tcl8.1	(tcl8.1b3)
の2つが存在していたことが原因です。

/opt/local/bin/ruby-1.3
/opt/local/bin/ruby-1.2
/opt/local/bin/ruby -> ruby-1.3
/opt/local/bin/rbc-1.3	(ruby-1.3を使う)
/opt/local/bin/rbc-1.2	(ruby-1.2を使う)
/opt/local/bin/rbc	(rubyを使う)
/opt/local/lib/tcl8.1/				(tcl8.1a)
/opt/i586-pc-linux-gnulibc2/lib/tcl8.1/		(tcl8.1b3)
/opt/local/lib/libtcl8.1.so
/opt/i586-pc-linux-gnulibc2/lib/libtcl8.1.so

という構成になっています。そして、rbcが使用しているrubyは
/opt/i586-pc-linux-gnulibc2/lib/libtcl8.1.soを使用するよう
になっています。

/opt/local/bin/rbcを実行すると実行時のディレクトリをもとに
検索しているらしく/opt/local/lib/tcl8.1というディレクトリの
中のファイルでTclインタプリタを初期化していたようです。
実際に/opt/i586-pc-linux-gnulibc2/bin/rbcなどを作ってやって
実行するとエラーになりません。あるいはTCL_LIBRARY環境変数を
setすればいいのかも、、、、

;; /opt/local/lib/tcl8.1が残っていたのはglibc2移行時の見落とし。(^^;

ちなみにTclのエラーメッセージをみると、tcl8.1aのauto.tclには
tcl_findLibraryという関数が定義されていないのが直接的な原因だ
ったようです。

			Takaaki Tateishi <ttate / jaist.ac.jp>