[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:03198] Re: [debian-users:05080] Bug#JP/246: slang0.99.38-ja conflicts to slang0.99.38-dev



少なくともld-linux.so.*では、.soのリンクは使っていません。実
行時には特定のバージョンとリンクする必要があるので、.soを使
ったら動作がおかしくなってしまいます。

簡単な例で、libfoo.so -> libfoo.so.2になっている環境で
libfoo.so.1を使うプログラムを実行するときを考えてみます。こ
のとき、libfoo.soを使ったら、間違えてlibfoo.so.2をロードして
しまう危険性があります。

そこで実際には、libfoo.so.1を使うプログラムでは、libfoo.soで
はなくて、libfoo.so.1を探すようになっています。つまり実行す
るときにはlibfoo.soはあってもなくてもいいということになりま
す。

その一方、リンクするときは、どのバージョンを使っていいか分か
らないので、libfoo.soによって、リンクするバージョンを決めま
す。libfoo.so -> libfoo.so.2となっていたら、libfoo.so.2を使
います。

/usr/libでなく/libに置くのは、起動直後/usrがマウントされてい
ないときでも使えるようにするためですね。

>>>>> On Mon, 6 Apr 1998 18:04:53 +0900, Kikutani Makoto <kikutani@debian.or.jp> said:

    KM> .a ならわかるのですが、.so は 実行時に必要なのではないでしょうか?


    KM> 私の疑問は、普通にslangをmake&installすると、.so は /usr/lib にインストール
    KM> されるのに、わざわざ /lib の下に置いている意味がわからんということでした。

-- 
ささやま <Kaz.Sasayama@xxxxxxxxxxxxxxx> / 有限会社ハイパーコア
「日本で最初のDebian GNU/Linuxコンサルタント」
* 日本フリーソフトウェア協会 (仮称) 設立準備中
* <URL:http://asis.hypercore.co.jp/fsa/>