うむ、調子良くないね。
FreeBSD3時代のバイナリを lib/compat で動かすとき、
libcは /usr/lib/compat/libc.so.3 から持って来るんだが、libmは
/usr/lib/libm.so.2 になる。で、libmで __stderrp
というシンボルを参照するようになって、これが 4.8Rの libc で定義されてい
る。ということで、古いバイナリで libm を使っているものを動かすときは必ず
__stderrp
の未定義エラーでこける。
で、4.8Rで __stderrp
は、findfp.c で定義されているので、
libm.so にも、findfp.So をいれてしまえば一応解決する。
やり方。
make world
しましょ。そしたら、
/usr/obj/usr/src/lib/msun
に libm.a, libm.so
ができてるはず。これをいったん消す。さらに、findfp.So,
findfp.o
をこのディレクトリにコピーしておこう。
findfp
は、/usr/obj/usr/src/libc/
にある。
で、/usr/src/lib/msun
にって make -n
とやる。すると、libm.*
をせいせ
いするためのコマンドラインが出てくるので、こいつをマウスかなんかで
ドラッグしてカットバッファに記憶しておこう。そして、
/usr/obj/usr/src/lib/msue
に戻ってそのコマンドラインを
ペースト。で、そこに findfp.So または findfp.o
を追加して
「ぺし」っとリターンを押す。んで、また、/usr/src/lib/msue
に戻って make install
だ。わっかるかな? わっかんねーだろー
なー。