小松です。
In the message of [ruby-list:17235] Re: make Ruby-1.4.2 on BeOS R4.5.2(Intel)
on 1999/9/30 00:54:40 tenmei / maoh.office.ne.jp (Noriaki Harada) wrote:
|---- ここから ----
|ld -shared ruby.def -L/boot/develop/lib/x86 -lbe -lroot -L/boot/home/TMP/ruby-1.4.2 -o etc.so etc.o -lruby
|/boot/develop/tools/gnupro/bin/ld:ruby.def: file format not recognized; treating as linker script
|/boot/develop/tools/gnupro/bin/ld:ruby.def:2: parse error
|---- ここまで ----
|
|といった状態でNGでした。
なるほどGNU ldなんですね。
それなら、-E (--export-dynamic) が使える可能性があります。
# ちょっと調べてみましたが、mwldx86なら、
# -pragma 'export on'
# で済むらしい。
|#すでにほとんど理解できない領域に入ってきて、検証しか出来ない(^^;
static linkはうまくいったようですが、BeOSな人でもう少し
つきあってくれる人がいるとうれしいです。
調べて欲しいのは、拡張ライブラリを動的にリンクする設定で、
1) ext/nkf/nkf.cを配布時のままで作ったときの以下の結果。
nm -p nkf.o | grep Init
nm -p nkf.so | grep Init
2) ldに-Eオプションを足したときの以下の結果。つまり、
ld -shared ...
を
ld -shared -E ...
か、エラーになるようなら、
ld -shared --export-dynamic ...
に変えてnkf.soを作ってみて以下を実行する。
nm -p nkf.o | grep Init
nm -p nkf.so | grep Init
3) ext/nkf/nkf.cのInit_nkf()の前に
__declspec(dllexport) void Init_nkf();
を追加したときの以下の結果。
nm -p nkf.o | grep Init
nm -p nkf.so | grep Init
--
小松克行 / Katsuyuki Komatsu <komatsu / sarion.co.jp>