質問

Solarisでアプリケーション固有の LD_LIBRARY_PATH 変数を設定するのに最適な場所は何ですか? 方法

  

LD_LIBRARY_PATH

可変動作?

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

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

役に立ちましたか?

解決

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

他のヒント

LD_LIBRARY_PATH の正式な説明は、" ld.so.1"のマニュアルページにあります。つまり、" man ld.so.1"を実行します。また、実行時リンカーによって尊重される他の変数についても説明します。

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

Vladr、alancは正しい。

SolarisでLD_LIBRARY_PATHを設定することは推奨されません。まったく。

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

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

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

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

.profileまたは.profile.userファイルを確認できます。コメント付きのエントリがあります。破損しているため、使用しないことをお勧めします。変数。

crleコマンドを使用できます:

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top