わたなべです。 ruby-devへ移行しましょう。 nobu.nokada / softhome.net <nobu.nokada / softhome.net> writes: > > $LIBPATH.unshift("$(libdir)") unless $extmk or CROSS_COMPILING > > をif文の外に出してしまって問題ないと思います。 > > つまり、$LIBPAHTの初期値は、$extmkなら$(topdir)、それ以外でネイ > ティブなら$(libdir)、ということですね。 はい。外に出すと $LIBPATH = $extmk ? ["$(topdir)"] : [] $LIBPATH.unshift("$(libdir)") unless $extmk or CROSS_COMPILING となるので、これをまとめると $extmkが真のときは ["$(topdir)"] となり、$extmkが偽でCROSS_COMPILINGが偽のときは [].unshift("$(libdir)") で、これは ["$(libdir)"] と等価ということですね。 > 残るはクロスコンパイルの > ときですが、ライブラリとかは一体どこに置かれてるもんでしょう。 $prefix/$cpu-$vender-$target/libあたりに。 > $(libdir)はターゲットシステム上でのインストール先ですよね。 そうです。何も変更しなければ/usr/local/libになります。 というわけで、$(libdir)が残るのはまずいです。 > やっぱり$(topdir)にそのまま残しておくものなんでしょうか。 拡張ライブラリを作るときにやはり指定したくなると思うので、 各々--with-foo-dirか、面倒なら--with-opt-dirでしょうね。 というわけで、CROSSのときは何もなくていいと思います。 つまり $LIBPATH = if $extmk ["$(topdir)"] elsif CROSS_COMPILING [] else ["$(libdir)"] end かな。 と、ここで疑問なんですが、そもそも$extmkが偽のときってなぜ $(libdir)を追加しちゃいけないんだっけ?むしろこんな感じかなあ。 $LIBPATH = CROSS_COMPILING ? [] : ["$(libdir)"] $LIBPATH.unshift "$(topdir)" if $extmk -- わたなべひろふみ って今度は返り討ちあったりして