2016-12-10 22 views
0

通常、linuxは/lib, /usr/lib/, /usr/local/libのようなシステム内の特定のフォルダ内のダイナミックライブラリを検索していることは知っています。実行中のプログラムが必要とする共有ライブラリが見つからない場合は、エラーが表示されます。linuxが同じフォルダ内の共有ライブラリを検索しない理由

私の質問は、なぜLinuxが現在のフォルダ内のライブラリを探すための機能を実装していないのですか?上記のすべてのフォルダ内で共有ライブラリを検索した後、ライブラリが見つからないと言う前に、現在のフォルダ内の共有ライブラリを検索します。

この機能は実装が簡単ではありませんか?私は何かが欠けている?

答えて

1

追加。通常、セキュリティリスクを招き、エンドユーザーにとってプログラムの動作を予測しにくくするため、LD_LIBRARY_PATHにはお勧めできません。あなたは絶対にこの道を行きたいとLD_LIBRARY_PATHの明示的な設定を避けたい場合は、-Wl,-rpath -Wl,'$ORIGIN'

    • リンクLD_LIBRARY_PATH適切に設定しますラッパーシェルスクリプトから直接ではなく、あなたのアプリを呼び出すことができず、 次にを実行する
  • 1

    あなたが求める機能は実装するのが難しくありませんが、セキュリティ上のリスクと考えられます。共有ライブラリは、LD_LIBRARY_PATH環境変数を使用して指定できます。

    あなたはhere詳細を見つけることができます。

    +0

    私はLD_LIBRARY_PATH環境変数について聞いたことがあります。しかし、この場合は、各コンピュータでその変数へのパスをエクスポートする必要があります。共有ライブラリを持つプログラムをユーザーに送信し、実行可能ファイルをクリックするだけで直接実行する方法はありません。 – Sidahmed

    +0

    その場合は、対象のLinuxフレーバーに基づいてインストール可能なパッケージを送信する必要があります。実行可能ファイルに適切な環境を設定することができます。 Imhoそれは努力の価値がある –

    関連する問題