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

Re:/etc/ld.so.confの設定について(wasRe:初めまして)



In message <20020531091725.C91C.TETUYA@rite.or.jp>
	on Fri, 31 May 2002 10:03:04 +0900,
	Tetsuya Saito <Tetsuya.Saito@rite.or.jp> wrote:
> taca> NetBSD 1.5.Xは、ELFの実行形式を使用しています。ldconfig(8)はa.outの実
> taca> 行形式のプログラムのために存在していて、NetBSD 1.4までのa.outの共有ラ
> taca> イブラリのためにあると言って良いでしょう。
> ここで、質問させてください。
> たとえば、NetBSD 1.5.Xにおいて、APACHE等をbuildしたいと考えた場合、
> /usr/local/ssl/libのライブラリをLINKさせようとしたときは、ldに対して
> "-L/usr/local/ssl/lib -R/usr/local/ssl/lib"と言うように/usr/lib以外に入っ
> ているライブラリすべてを列記する必要があると言うことでしょうか?
そうです。cc(1)からは、-Wl,-R/usr/local/ssl/lib といった感じになるでしょ
う。pkgsrcでは、そのあたりをすべて面倒見てくれます。

> もしくは、環境変数に対して、LD_LIBRALY_PATH、LD_RUN_PATHを設定する必要が
> あるということでしょうか?
という方法もありますが、LD_LIBRARY_PATHはsetuid/setgidされた実行ファイ
ルに関しては無視されますから、次善の策と言えます。

> 上記、神戸様のご解説「ld.so.confはa.out形式のライブラリの為に存在してい
> る」と言うところと、上記の「'/'で始まっていない行は〜」の部分とで少し混
> 同しております。
あぁ、ちょっと混乱させてしまってごめんなさい。

> このような解釈でよろしいでしょうか?
> 1.ld.so.confはa.out形式のライブラリの為に存在しいる。
「元々は」ですね。ELF形式で、数値演算ライブラリに使っている書式は後付
けのNetBSDの拡張です。

> 2.現状のNetBSD1.5.Xにおいては、a.out形式のライブラリは存在しない(?)
インストールした直後では存在しません。i386に関しては、1.4まではa.out形
式でしたが、1.5以降はELFに移行したためです。

> 3.たとえば、ld.so.confに'/'で始まっていない行を記述すれば、それはELF形
> 式であったしても、/usr/libexec/ld.elf.soが適切に解釈し、ELF形式のsearch
> directoryを構築してくれる?
ld.so.conf(5)を読む限りは、ダメです。繰り返しますが、ELF形式ではライブ
ラリの場所は実行ファイルに埋め込まれていることになっているので、そもそ
もsearch directoryといったものは不要という考えだからです。

> 4.既存の状態でldconfig -rを実行したときのsearch directoryは変更出来な
> い?。たとえば、意味がないかもしれませんが、/etc/ld.so.confに対して
> /usr/local/ssl/lib等を追加して、ldconfigを実行したとしても結果は反映され
> ないのはなぜ?
ldconfig(8)のソースをざっと眺めると、ELF形式の場合はa.outのエミュレー
ションのディレクトリにある/emul/aout/etc/ld.so.confを見るようになって
いました。現在のi386ではldconfig(8)はa.out形式のために存在していますか
ら、このようになっているのでしょう。

なお、/etc/ld.so.confに書く他にコマンド行でも指定できます。

> 5.上記4の質問と同じかもしれませんが、ldconfig -rの
> /usr/lib:/usr/X11R6/libはデェフォルト設定であるため、変更することはでき
> ない?
というわけで、emul/aout/etc/ld.so.confに書くというのが正解です。

ただ、ldconfig -rで表示される検索パスは、/var/run/ld.so.hintsに保存さ
れている内容で、このld.so.hintsをld.elf_soが参照することはありません。

--
神戸 隆博 / Takahiro Kambe