9

LD_LIBRARY_PATHSolaris でアプリケーション固有の変数を設定するのに最適な場所はどこですか? どうやって

LD_LIBRARY_PATH

可変作業?

現在 で設定してい.kshrcますが、アプリケーションごとに異なるバージョンのメッセージング フレームワークが必要ですが、これらのアプリケーションは同じ用途で実行されるLD_LIBRARY_PATHため、異なる が必要になります。この変数を設定するのに最適な場所はどこだと思いますか?

基本的に、この変数パスをユーザー環境固有ではなく、アプリケーションの一部にする方法を見つけようとしています。

4

7 に答える 7

14

通常、アプリケーションを起動するシェル スクリプトを用意するだけです。シェル スクリプトでは、LD_LIBRARY_PATH をそのアプリに必要なものに設定し、スクリプトでそのアプリを起動します。そのようにすると、そのアプリケーションに対してのみパスが設定されます。

于 2009-03-02T22:11:09.913 に答える
6

「ld.so.1」のマニュアルページで正式な説明を見つけることができますLD_LIBRARY_PATH。つまり、「man ld.so.1」を実行してください。また、実行時リンカーによって受け入れられるその他の変数についても説明します。

に加えてLD_LIBRARY_PATH、実行可能ファイルと共有ライブラリには、ライブラリの組み込み検索パスを含めることもできます。自分でリンクしたアプリケーションを実行している場合は、ld の -R オプションを使用して組み込みパスを設定できます (Sun CC と gcc の両方に同じことを行うオプションがあります)。LD_LIBRARY_PATHこれにより、そもそも使用を避けることができます。

于 2009-03-03T21:58:18.597 に答える
2

Vladr、alancは正しいです。

Solaris で LD_LIBRARY_PATH を設定することはお勧めしません。まったく。

特定の実行パスをライブラリまたは実行可能ファイルに焼き付ける必要がある場合は、リンカーに -R フラグを使用する必要があります。gcc でビルドする場合は、-Wl,Rpath を使用します (と思います)。

ビルド後のステップでこれを行う必要がある場合 (たとえば、再コンパイルするソースが不足している場合)、elfedit(1) が大いに役立ちます。これはマンページに記載されており、 http: //docs.oracle.com/cd/E26502_01/html/E26507/index.html の Linker+Libraries Guide にも記載されています。

于 2014-02-04T02:47:59.860 に答える
1

crle の応答が最も正しいです。Solaris では、LD_LIBRARY_PATH使用しないでください。代わりに crle を使用してください。現在のパスを表示するには、"crle" を単独で実行します。リストを更新するには、 を使用しますcrle -u -l /path/to/your/lib/directory。システム構成への-u変更を書き込むには が必要です。そうしないと、変更は一時的なものになります。その他のオプションについては、man ページを参照してください。

于 2010-06-09T15:34:52.900 に答える
0

グローバル LD_LIBRARY_PATH が有効にならないケースが見つかりました。アプリの前にスクリプトをラップして LD_LIBRARY_PATH を設定する必要がありました。blastwave の pkgutil を介して /opt/csw/lib に多くのライブラリをインストールした場合、crle は優れたグローバル ソリューションです。

于 2010-09-17T01:36:01.387 に答える
-1

次の crle コマンドを使用できます。

crle -l /path/to/your/lib/file

于 2010-01-03T02:11:47.243 に答える