小松です。

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>