共有ライブラリの追加

概要

共有ライブラリをシステムに認識させるには、そのディレクトリを共有ライブラリ検索パスに追加する必要があります。/libディレクトリと/usr/libディレクトリはデフォルトで含まれていますが、FedoraCentOSでは/usr/local/libディレクトリが含まれていないため、手動で追加する必要があります。



構成

CentOS release 5.7 (Final)



環境変数 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
...