概要
共有ライブラリをシステムに認識させるには、そのディレクトリを共有ライブラリ検索パスに追加する必要があります。/libディレクトリと/usr/libディレクトリはデフォルトで含まれていますが、FedoraやCentOSでは/usr/local/libディレクトリが含まれていないため、手動で追加する必要があります。
環境変数 LD_LIBRARY_PATHに指定する
環境変数 LD_LIBRARY_PATHを使うと、そのディレクトリを一時的に共有ライブラリ検索パスに追加することができます。ただし再起動すると元に戻ってしまうため、永続的に追加したい場合は/etc/ld.so.confに記述します。
LD_LIBRARY_PATHに指定されたディレクトリは/etc/ld.so.confに記述されたディレクトリよりも優先的に検索されます。
export LD_LIBRARY_PATH=/usr/local/bin:$LD_LIBRARY_PATH
/etc/ld.so.confに記述する
永続的に追加したい場合は/etc/ld.so.confに記述します。
FILE: /etc/ld.so.conf
--- /etc/ld.so.conf 2011-12-25 14:33:17.000000000 +0900
+++ /etc/ld.so.conf 2011-12-25 14:33:34.000000000 +0900
@@ -1 +1,2 @@
include ld.so.conf.d/*.conf
+/usr/local/lib
/etc/ld.so.confを更新したら、ldconfigコマンドを用いて/etc/ld.so.cacheの情報も更新する必要があります。
# ldconfig
/etc/ld.so.cacheとは
ライブラリ名とライブラリが格納されているディレクトリ名の対応がキャッシュされているファイルです。ここに情報がキャッシュされることで、共有ライブラリを使用してプログラムを実行できるようになります。
現在キャッシュされている内容を表示するには、オプション-p
を付けてldconfigコマンドを実行します。
# ldconfig -p
544 libs found in cache `/etc/ld.so.cache'
libz.so.1 (libc6,x86-64) => /lib64/libz.so.1
libz.so.1 (libc6,x86-64) => /usr/lib64/libz.so.1
libz.so.1 (libc6) => /lib/libz.so.1
libz.so.1 (libc6) => /usr/lib/libz.so.1
...