2009-05-06 6 views
3

個々のアプリケーションにLD_LIBRARY_PATHを設定できますか? 私はシステムコールの失敗を調べているので、LD_LIBRARY_PATH設定を使用して正しいパスを設定する方法はありますか?LD_LIBRARY_PATH

答えて

11

最も簡単な方法は、シェルスクリプトを作成することです。

は、シェルスクリプトは、アプリケーション起動後、新しいLD_LIBRARY_PATH変数をエクスポート持っ

例えばbashで動作します

LD_LIBRARY_PATH=new_path:$LD_LIBRARY_PATH foo 

:のような単純な

#!/bin/sh 
LD_LIBRARY_PATH=some_path:$LD_LIBRARY_PATH 
export LD_LIBRARY_PATH 
foo 
7

(ここで、fooがあなたのアプリです)。私はだと思います。それはすべてのbourne shell派生商品で動作しますが、保証はできません。

もちろん、この方法では、の時間を時間ごとに入力する必要があります。繰り返し行うには、Glen's approachを使用することをお勧めします。

+0

この方法は、Bourneシェル、Kornシェル、およびPOSIXシェルで機能します。 –

5

注意事項:プログラム内にLD_LIBRARY_PATHを設定して現在のプログラムに影響を与えることはできません。これは、ダイナミックローダー(ld.so.1または類似の名前)が既にロードされていて、コードの実行前に環境変数を読み込んで処理したためです。現在のプロセスの環境で設定することができます。その値は子プロセスに影響し、exec()ファミリーの関数の1つを使用して、環境設定されたプログラムを実行することができます。極端な場合、現在のプログラムを再実行できますが、それは極端なです!

+0

プログラム内でLD_LIBRARY_PATHが設定された後に 'dlopen'が有効になるのだろうか? – PnotNP

+0

ソースを見つけて、呼び出されるたびに' dlopen() 'が環境変数を読み込むかどうかを調べることができます。私の印象はそうではありませんが、実験をしてからの長い時間ですが、過去10年間で変化している可能性があります。 –

関連する問題