.cshrcとLD_LIBRARY_PATH


コマンド実行時、リンクするライブラリを見つけられないことによるエラーが起きることがあります。これを回避するために、
  1. .cshrcにLD_LIBRARY_PATHを設定し、プログラムを実行する時にリンクするライブラリを示しておく。
  2. .cshrcにLD_RUN_PATHを設定し、プログラムをコンパイルするときにデフォルトのライブラリを指定しておく。
  3. リンク時のオプションに -Rlibrary-pathを用いる。

LD_LIBRARY_PATH
-lオプションで指定されたライブラリを検索するディレクトリのリストです。複数のディレクトリの間は、コロンで区切られます。最も一般的な例は、次のようにセミコロンで区切られた2つのディレクトリリストです。

dirlist1;dirlist2

ldを呼び出したとき、次のように-Lが何回か指定されている場合、

ld ... -Lpath1 ... -Lpathn ...

検索の順番は、次のようになります。

dirlist1 path1 ... pathn dirlist2 LIBPATH

ディレクトリリストにセミコロンが含まれていない場合、dirlist2と解釈されます。

LD_LIBRARY_PATHは、実行時に実行時リンカへライブラリ検索ディレクトリを指定するのにも使用されます。したがって、LD_LIBRARY_PATHが環境内に存在する場合、実行時リンカは、実行時にプログラムとリンクする共有オブジェクトの検索を、デフォルト時のディレクトリについて行う前に、このリストに指定されているディレクトリについて行います。

セットユーザIDプログラムまたはセットグループIDプログラムを実行する場合は、実行時リンカがライブラリを検索するディレクトリは、実行可能オブジェクトの作成時に指定されて、実行可能オブジェクト中に実行パスとして記録されている完全パス名、および/usr/libだけですので注意してください。相対パス名として指定されたライブラリ依存はすべて、メッセージを出力することなく、無視されます。

LD_RUN_PATH
実行パスを指定するもう1つの手段です( -Rオプションを参照)。 LD_RUN_PATHと-Rオプションの両方を指定した場合には、-Rオプションが優先されます。

ldd
ldd lists the dynamic dependencies of executable files or shared objects. If filename is an executable file, ldd lists the pathnames of all shared objects that would be loaded as a result of executing filename.

参考文献
Message-ID: <SANO.96Aug23075830@hegemony.csce.kyushu-u.ac.jp>

目次
名古屋大学医学部附属病院分院内科
市橋卓司(takuji@med.nagoya-u.ac.jp)