プログラムが共有ライブラリに依存している場合、プログラムの実行時にそのライブラリが実際にどこにあるかを探すのは dynamic linker & loader の役目です。
Unix 由来の OS では ld.so などと呼ばれるプログラムがこの役割を果たします。
ld.so が共有ライブラリの実体を探す場所(パス)を調整する昔ながらの方法がいくつかあります:
LD_LIBRARY_PATH
で指定する(Mac OS X の場合は DYLD_LIBRARY_PATH
)LD_RUN_PATH
で指定する-rpath
オプションで指定する(ELF 実行形式または SunOS の場合)最近では、これらの方法にはそれぞれ問題があるため原則として避けるべき、という意見がよく見受けられます:
代替となる手段はプログラムごとに、またターゲットとする OS や実行形式ごとに異なるでしょう。
こうなってくると Mac OS X の dyld(1) というやや毛色の異なる仕組みも悪くないような気がしてきます。
参考