こんにちは、鶴谷です。

 FreeBSD/amd64 6.1-PRERELEASEで、FreeBSD/i386上で作成した、
32-bitなスタティックリンクバイナリを実行すると、
セグメント違反で異常終了します。
これは「そんなもの」なのでしょうか?
 なお、ダイナミックリンクの32-bitバイナリや、スタティックリンクのamd64バイナリは、
どちらも問題ありませんでした。
また、amd64上で作成した32-bitな{スタティック|ダイナミック}リンクバイナリも動きます。

 何でこんなことをしようとしたかというと、FreeBSD/amd64で32-bitバイナリが依存する
共有オブジェクトを調べようとしてうまくいかなかったからです。
 amd64のlddでは
        ldd: bin/iputils: can't read program header
        ldd: bin/iputils: not a dynamic executable
と表示されてうまくいきません。
i 386用のlddを持ってきて実行すると、なぜか引数に指定したバイナリが
実行されてしまいます。
 そこで、i386上でスタティックリンクしたlddを作ってamd64上へ持っていけば
大丈夫かもしれないと、試してみたところ、セグメント違反になりました。
 ちなみに、32-bitのlddも、amd64上で作れば、64-bitなlddと同じメッセージを出して
うまくいかないようです。
# 64-bitなlddでも、32-bitなlddでも、きちんと依存するオブジェクトを表示できないのは、
#きっと何か原因があるのでしょうが、ここではそれはちょっと置いておきます。

-- 
[EMAIL PROTECTED]
E-mail: [EMAIL PROTECTED]

メールによる返信