共有ライブラリとは、プログラムの実行時に動的にロードされてリンクするライブラリであり、ldd コマンドで実行ファイルを引数に指定することで、それのライブラリを表示させることができます。
- 共有ライブラリを必要とするプログラムが実行されると、/etc/ld.so.cache ファイルが参照され、共有ライブラリが格納されているディレクトリのパスを取得します。これにより、システムはライブラリを効率的に検索できます。
- /etc/ld.so.cache ファイルは、/etc/ld.so.conf ファイルを元に作成されます。ldconfig コマンドを使用することで、このキャッシュを更新することができます。
- /etc/ld.so.conf ファイルを編集した場合、新しい設定を反映させるためには ldconfig コマンドを実行する必要があります。これにより、共有ライブラリの検索パスが更新され、新しい設定が反映されます。
- 共有ライブラリの検索パスを追加するには、LD_LIBRARY_PATH 環境変数に追加したいパスを指定します。この方法は一時的な設定であり、他のプログラムには影響を与えませんが、環境変数を介してライブラリを提供する必要がある場合に役立ちます。
/bin/ls を引数に指定して ldd コマンドを使用してみます。
myadmin@ubuntu:~$ ldd /bin/ls
linux-vdso.so.1 (0x00007ffcd9554000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f2999013000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2998dea000)
libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f2998d53000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2999070000)
詳細は以下の通りです。
- linux-vdso.so.1: Linux の仮想ダイナミック共有オブジェクトであり、バーチャルダイナミック共有オブジェクト ( VDSO ) として知られています。カーネルの機能を利用するためのライブラリです。
- libselinux.so.1: SELinux ( Security-Enhanced Linux ) を扱うためのライブラリです。
- libc.so.6: C 標準ライブラリであり、ほとんどの C プログラムに必要な基本的な関数を提供します。
- libpcre2-8.so.0: Perl 互換の正規表現ライブラリです。
- /lib64/ld-linux-x86-64.so.2: 64 ビットの Linux システムにおいて実行可能ファイルのローダーとして機能する動的リンカーです。
LPIC 共有ライブラリ