From: Hidetoshi NAGAI Date: 2009-07-15T22:25:09+09:00 Subject: [ruby-dev:38796] Re: [Bug:trunk] Re: [ruby-cvs:31281] Ruby:r24063 (trunk): * ext/tk/extconf.rb: New strategy for searching Tcl/Tk libraries. 永井@知能.九工大です. From: "U.Nakamura" Subject: [ruby-dev:38794] Re: [Bug:trunk] Re: [ruby-cvs:31281] Ruby:r24063 (trunk): * ext/tk/extconf.rb: New strategy for searching Tcl/Tk libraries. Date: Wed, 15 Jul 2009 18:37:53 +0900 Message-ID: <20090715183252.17F6.C613B076@garbagecollect.jp> > いえ、推測は全然問題ないんですが... > $LIBPATHは拡張ライブラリのビルド時に必要なライブラリのパスを > 入れる配列ですから、今現在存在しないパスを指定する意味が全然 > わかりません... > > あ、$LIBPATHがrpathとしてバイナリに埋め込まれる環境があるんで > すかね。 あ,いえ,そういうことではありません. mkmf.rb の create_makefile() メソッドにおいて, Makefile 生成の際に rpath 設定を定義させるために $LIBPATH に設定しておく方法しか見付けられなかったためです.(^_^; おっしゃる通り,本当は rpath 設定だけでいいし,そうしたいのですが, $LIBPATH へ設定する方法では,いやが応にも両方設定されてしまいます. 単に私が間抜けで見付けることができなかっただけに過ぎず, 実際には正しいやり方が存在するということであれば 教えていただけますと助かります. > 実は存在するしないには関係ないのですが、VC++のリンカのバージ > ョンによっては(なのかな)、空白を含むライブラリパスは使用でき > ません。 > なので、c:/Program Files/Tcl/lib とかが強制的に指定されるよう > だと、どこに何があろうが必ずリンクに失敗します。 ぁぅ,ぁぅ... だとすると,インストールされそうな場所に思える Program Files 以下は ダメってことですよね. きっと,Windows 環境のリンカのすべてがそうと限られているわけではなく, リンカ次第では Program Files 以下でも問題なしだったりするのでしょうね. で,extconf.rb の中からでは,リンカの特性まではわからない... ぅぅ...どうしようもないですねぇ... > > mswin32 の場合には TK_LIB_SPEC を使ってはダメということのようですが, > > TK_LIBS を使っている点はどうでしょうか. > > これも使うとダメになりますか? > > とりあえず、TK_LIBSはそのまま使えそうには見えます。 > TK_LIB_FLAGやTK_LIB_SPECはVC++で使うことを想定しているように > は見えませんね。 (snip) > ちなみに、tcltklib.soのリンクにはTK_LIBSの内容自体がそもそも > 不要です。あっても害はさほどなさそうですが。 わかりました. では Windows 環境用にはTcl/Tk の検索先を増やす (空白入りのパスは含めない) 以外には特別なことをせず, 従来通りとするように方針を変更します. ただ,もし処理方法選択に使えそうな情報や判断基準がありましたら ぜひ教えてください. そういうものがある場合には極力それを活かしたいと思います. -- 永井 秀利 (nagai@ai.kyutech.ac.jp) 九州工業大学 大学院情報工学研究院 知能情報工学研究系 知能情報メディア部門