ldconfig コマンドは、システムに共有ライブラリの新しい場所を通知するために使用されます。 /etc/ld.so.conf によって提供される使用情報
ldconfig コマンドは、構成ファイルに基づいてすべてのライブラリのキャッシュ データベースを作成します。このキャッシュは通常 /etc/ld.so.cache に保存されます ファイル。
ldconfig コマンドの構文は次のとおりです:
# ldconfig [option]
次の表に、ldconfig コマンドの便利なオプションを示します:
オプション | 説明 |
---|---|
-v | 冗長;追加情報を出力します。 |
-n | コマンドライン オプションを使用して、新しい共有ライブラリの場所を指定します。例:ldconfig -n /some/directory. |
-f | デフォルトではなく別の構成ファイルを指定します (/etc/ld.so.conf )。 |
-p | キャッシュ ファイルに保存されている現在のライブラリのリストを出力するために使用します。 |
構成ファイル /etc/ld.so.conf
共有ライブラリの主な構成ファイルは /etc/ld.so.conf ファイルです。ただし、通常、このファイルには 1 行しかありません:
# cat /etc/ld.so.conf include ld.so.conf.d/*.conf
このファイルの include 行は、指定されたディレクトリ内のすべての構成ファイルも使用するようにシステムに指示します。前の例の場合、/etc/ld.so.conf.d ディレクトリ内の「.conf」で終わるすべてのファイルになります。
構成ファイル自体は単純です。共有ライブラリが保存されているディレクトリが含まれているだけです:
# more /etc/ld.so.conf.d/libiscsi-x86_64.conf /usr/lib64/iscsi # ls /usr/lib64/iscsi libiscsi.so.2 libiscsi.so.2.0.10900
キャッシュされたライブラリの一覧表示
キャッシュされたライブラリを一覧表示するには、以下に示すように ldconfig コマンドの -p オプションを使用できます:
# ldconfig -p | more 784 libs found in cache `/etc/ld.so.cache' p11-kit-trust.so (libc6,x86-64) => /lib64/p11-kit-trust.so libz.so.1 (libc6,x86-64) => /lib64/libz.so.1 libyaml-0.so.2 (libc6,x86-64) => /lib64/libyaml-0.so.2 libyajl.so.2 (libc6,x86-64) => /lib64/libyajl.so.2 libxtables.so.10 (libc6,x86-64) => /lib64/libxtables.so.10 libxslt.so.1 (libc6,x86-64) => /lib64/libxslt.so.1 libxshmfence.so.1 (libc6,x86-64) => /lib64/libxshmfence.so.1 libxml2.so.2 (libc6,x86-64) => /lib64/libxml2.so.2 libxmlrpc_util.so.3 (libc6,x86-64) => /lib64/libxmlrpc_util.so.3 libxmlrpc_server_cgi.so.3 (libc6,x86-64) => /lib64/libxmlrpc_server_cgi.so.3 libxmlrpc_server_abyss.so.3 (libc6,x86-64) => /lib64/libxmlrpc_server_abyss.so.3 ....
ldconfig を使用して新しいライブラリを追加
新しい共有ライブラリをシステムに追加するには、まずライブラリをシステムにダウンロードしてディレクトリに配置します。新しいライブラリを追加したら、/etc/ld.so.conf.d ディレクトリに構成ファイルを作成し、ldconfig コマンドを実行します。これらのタスクはすべて root ユーザーとして実行する必要があります:
# ls /usr/lib64/test mylib.so.1 # cat /etc/ld.so.conf.d/libtest.conf /usr/lib64/test # ldconfig
ldconfig コマンドが正常に実行された場合、出力はありません。
LD_LIBRARY_PATH 変数
通常のユーザーは ldconfig コマンドを正常に実行できません。ただし、通常のユーザーがカスタム共有ライブラリを使用したい場合、そのユーザーはこのファイルを自分のホーム ディレクトリにダウンロードし、LD_LIBRARY_PATH を使用してカスタム ライブラリ ファイルの場所を次のように指定できます。
$ ls /home/testuser/lib mylib.so.1 $ LD_LIBRARY_PATH=/home/testuser/lib
有効に実行された場合、最後のコマンドは出力を生成しません。これを永続的な変更にするには、LD_LIBRARY_PATH=/home/testuser/lib を配置します ~/.bashrc のコマンド ファイル。
$ vi ~/.bashrc LD_LIBRARY_PATH=/home/testuser/lib export LD_LIBRARY_PATH
ldd コマンド
ldd コマンドを使用すると、特定のコマンドが使用する共有ライブラリを確認できます。 ldd コマンドの構文は次のとおりです。
# ldd [options] FILE
例:
# ldd /bin/ls linux-vdso.so.1 => (0x00007ffee2b3f000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007ff5a6c22000) libcap.so.2 => /lib64/libcap.so.2 (0x00007ff5a6a1d000) libacl.so.1 => /lib64/libacl.so.1 (0x00007ff5a6814000) libc.so.6 => /lib64/libc.so.6 (0x00007ff5a6447000) libpcre.so.1 => /lib64/libpcre.so.1 (0x00007ff5a61e5000) libdl.so.2 => /lib64/libdl.so.2 (0x00007ff5a5fe1000) /lib64/ld-linux-x86-64.so.2 (0x00007ff5a6e49000) libattr.so.1 => /lib64/libattr.so.1 (0x00007ff5a5ddc000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff5a5bc0000)
ldd コマンドを使用する目的は、作成中のコードの問題をトラブルシューティングすることです。このコマンドは、どのライブラリが呼び出されているかだけでなく、具体的には各ライブラリがどのディレクトリから呼び出されているかを示します。これは、ライブラリが期待どおりに動作しない場合に非常に役立ちます。
次の表に、ldd コマンドの便利なオプションを示します:
オプション | 説明 |
---|---|
-v | 冗長;追加情報を出力します。 |
-u | 未使用の直接依存関係を表示します。 |