システムファイルに触れることなく "ldconfig"を使用してください

システムファイルに触れることなく "ldconfig"を使用してください

ライブラリをコンパイルし、実行する必要があります。ただし、ライブラリや他のシステムファイルをldconfig変更しないでください。/etc/ld.so.conf他の場所でキャッシュを生成し、選択したプログラムをコンパイルするときにのみ表示されるようにすることはできますか?または、LD_LIBRARY_PATHこの目的のために手動で設定する必要がありますか?LD_RUN_PATH

答え1

次の-fオプションを確認できます。LD構成:

-fカンファレンス
/etc/ld.so.conf の代わりに conf を使用してください。

実行する場合:

ldconfig -f custom.conf

ユーザーに十分な権限があれば修正します。read /etc/ld.so.cache、他のファイルから読み取ることはできないと思います ld/etc/ld.so.cache

システムファイルを変更したくないので、次のことができます。

gcc -W -Wall -L/path_to_your_library -lyour_library test.c -o testo

testo.cを構築

それから:

export LD_LIBRARY_PATH=/path_to_your_library

デバッグヘルプを設定しLD_LIBRARY_PATH、最新バージョンのライブラリを実行してみても、一般的な開発環境設定と展開での使用は悪いと見なされます。もっと確認できますここ

別のアプローチを使用できますrpath

unset LD_LIBRARY_PATH
gcc -L/path_to_your_library -Wl,-rpath=/path_to_your_library -W -Wall -o testo testo.c -lyour_library

この方法rpathでは、各プログラムが共有ライブラリの場所を個別に一覧表示できます。欠点:共有ライブラリは固定場所にインストールする必要があります。また、テストしていませんが、ライブラリがNFSマウントを参照している場合は問題になる可能性があります。

関連情報