1 回限りの場合は、変数 LD_LIBRARY_PATH
を設定します 検索するディレクトリのコロンで区切られたリストに。これは PATH
に似ています ただし、標準のシステム ディレクトリは、環境で指定されたディレクトリの後に追加で検索されます。
LD_LIBRARY_PATH=/usr/local/lib64 ./cart5
ライブラリを非標準の場所に保持し、それ自体を見つけることができないプログラムがある場合は、ラッパー スクリプトを記述できます。
#!/bin/sh
if [ -n "$LD_LIBRARY_PATH" ]; then
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
else
LD_LIBRARY_PATH=/usr/local/lib64
fi
export LD_LIBRARY_PATH
exec /path/to/cart5 "[email protected]"
標準システム ディレクトリのリストは /etc/ld.so.conf
に保持されます .最近のシステムでは、このファイルに他のファイルを含めることができます。 include /etc/ld.so.conf.d/*.conf
のようなものが含まれている場合 、 /etc/ld.so.conf.d/mala.conf
という名前の新しいファイルを作成します 追加するディレクトリが含まれています。 /etc/ld.so.conf
を変更した後 またはインクルードされたファイルで、/sbin/ldconfig
を実行します 変更を有効にします (これによりキャッシュが更新されます)。
(LD_LIBRARY_PATH
FreeBSD、NetBSD、OpenBSD、Solaris、Tru64 など、他の多くの unice にも適用されます。 HP-UX には SHLIB_PATH
があります Mac OS X には DYLD_LIBRARY_PATH
があります . /etc/ld.so.conf
ほとんどの unice に類似のものがありますが、場所と構文はさらに大きく異なります。)
LD_LIBRARY_PATH を避けたい場合は、リンク中にこれを行うこともできます:
gcc -o exename -L/path/to/dynamiclib/ -lnameofLib \
-Wl,-R/path/to/dynamiclib/ sourceCode1.c ...
-Wl,... は追加のコマンドをリンカーに渡すために使用されます。この場合、-R を使用して、このパスを .so の「デフォルトの検索パス」として保存するようにリンカーに指示します。
私のサイトでは、このような多くの小さなヒントをメモしています:
https://www.thanassis.space/tricks.html