From: "U.Nakamura" Date: 2009-07-15T18:37:53+09:00 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. こんにちは、なかむら(う)です。 In message "[ruby-dev:38793] Re: [Bug:trunk] Re: [ruby-cvs:31281] Ruby:r24063 (trunk): * ext/tk/extconf.rb: New strategy for searching Tcl/Tk libraries." on Jul.15,2009 18:06:23, wrote: > > 実は先に修正いただいた分では完全じゃありませんでした。 > > とりあえず、$LIBPATHに実在しないパスを追加するのは勘弁してく > > ださい、ということで。 > > これは,将来的に新しいバージョンの Tcl/Tk をインストールしたり, > コンパイル済みのバイナリを他の環境に持っていったりした場合に備えて, > 現在は存在しなくても将来的には「ありそうな」ディレクトリを > 現況に基づく推測の下に追加しておくようにしたのですが, > Windows 環境ではこれも余計なお世話だったでしょうか. いえ、推測は全然問題ないんですが... $LIBPATHは拡張ライブラリのビルド時に必要なライブラリのパスを 入れる配列ですから、今現在存在しないパスを指定する意味が全然 わかりません... あ、$LIBPATHがrpathとしてバイナリに埋め込まれる環境があるんで すかね。 > 私が Windows 環境をきちんとわかっていないというのが問題なのですが, > mswin32 環境または Windows 環境一般では実行時に問題が生じるのでしょうか. > それとも mswin32 環境での make において, > 存在しないディレクトリが指定されていると > コンパイルエラーで止まってしまうということでしょうか. 実は存在するしないには関係ないのですが、VC++のリンカのバージ ョンによっては(なのかな)、空白を含むライブラリパスは使用でき ません。 なので、c:/Program Files/Tcl/lib とかが強制的に指定されるよう だと、どこに何があろうが必ずリンクに失敗します。 # これは永井先生が悪いんじゃなくてMicrosoftが悪いんですけどね... > mswin32 の場合には TK_LIB_SPEC を使ってはダメということのようですが, > TK_LIBS を使っている点はどうでしょうか. > これも使うとダメになりますか? とりあえず、TK_LIBSはそのまま使えそうには見えます。 TK_LIB_FLAGやTK_LIB_SPECはVC++で使うことを想定しているように は見えませんね。 extconf.rbがあまりに巨大でちゃんと読めてないんですが、そもそ も実際にはどんな入力を仮定してどんな出力を生成しようとしてい るのでしょう? ちなみに手元のtkConfig.shにはこんなものが入っています。 TK_LIBS='user32.lib advapi32.lib gdi32.lib comdlg32.lib imm32.lib comctl32.lib shell32.lib' TK_LIB_FLAG='-ltk84' TK_LIB_SPEC='-LC:/tcl/lib -ltk84' > あ,もしかして TK_LIBS を加工しようとしていることがそもそもの間違いで, > TK_LIBS の内容はそのまま LDFLAGS につなぐだけでいいのでしょうか. > link.exe が受け取ることができるオプションを > きちんと調べないといけないですね. とりあえず、-lと-Lはありません。 というか、LDFLAGSに直接なんか渡すのは困難だと思います。 ちなみに、tcltklib.soのリンクにはTK_LIBSの内容自体がそもそも 不要です。あっても害はさほどなさそうですが。 > -- > 永井 秀利 (nagai@ai.kyutech.ac.jp) > 九州工業大学 大学院情報工学研究院 知能情報工学研究系 知能情報メディア部門 それでは。 -- U.Nakamura