市川%BeOS&rubyがなくなったら死んでしまう です。
ちなみにruby.defがなくなってるのは[ruby-list:12123]で僕がいらん
と言っちゃったからだと思います。
僕も1.4.2がmakeできなくて途方にくれてました。
でも、実のとこ1.2.x時代もmakeはできるんだけどKconvとかext以下の
パーツが一切使えなくて困ってまして、なんでかいなと調べてみました。
今のMakefileだとlibruby.{a,so}ともにdmyext.oを格納しています。
この中は空のInit_ext()がぽんとあるだけで、miniruby作成用の
ダミー関数なのだろうなぁと思ってます。
で、これを
#include <stdio.h>
void
Init_ext()
{
puts("no ext");
}
と書き足しまして、v1.2.6でminiruby、rubyともに作ってみますと、
どっちでも
no ext
と出力されました。
なんでなんだかわからないですけども、extinit.oのInit_ext()でなく
libruby.*側の方のInit_ext()が呼ばれています。
つまりextの各モジュールがリンクできてないんでなくて、初期化関数
が呼ばれてないようです。
ってことで、libruby.{a,so}にdmyext.oを入れないようにしたら
p Kconv
としてもエラーが出なくなりました。(^o^)
同じテで1.4.2でもOKみたいです。
でも、なんでロードモジュール側でなくてライブラリ側のオブジェクト
が優先されてるのかなぁ?
#ext/socketはファイル/ソケットディスクリプタの統合される(R5?)まで
#我慢するしかなさそう…
-----
市川 裕隆 hirotaka.ichikawa / tosmec.toshiba.co.jp
東芝マイクロエレクトロニクス CAD基礎技術開発担当