ldd
何するコマンド?
指定したファイルで使っている共有ライブラリを表示するときに使うコマンド
書き方
ldd [オプション] [対象のファイル名]
オプション
| オプション | 説明 |
|---|---|
| -d | 「データ再配置を処理する」らしい |
| --data-relocs | 「データ再配置を処理する」らしい |
| -r | 「データと関数再配置を処理する」らしい |
| --function-relocs | 「データと関数再配置を処理する」らしい |
| -u | 使用されていない直接依存関係を表示する |
| --unused | 使用されていない直接依存関係を表示する |
| -v | 全ての情報を表示する |
| --verbose | 全ての情報を表示する |
| --help | ヘルプを表示する |
| --version | バージョン情報を表示する |
補足事項
共有ライブラリは「いろんなプログラムから使える、プログラムの部品」です。
文字通り、共有して使えるライブラリです。
それを踏まえて
「このファイルは、どんな共有ライブラリを使ってるのかな~?」を確認するときに使うコマンド
が「ldd」コマンドです。
対象のファイルを指定して「ldd」コマンドを実行すると、共有ライブラリの依存関係(そのファイルがどんな共有ライブラリを使っているか)を表示してくれます。
例えば
ldd /usr/bin/ls
を実行したところ、私の環境(CentOS 7)では以下の内容が表示されました。
linux-vdso.so.1 => (0x00007fff455ae000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f2198947000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007f2198742000)
libacl.so.1 => /lib64/libacl.so.1 (0x00007f2198538000)
libc.so.6 => /lib64/libc.so.6 (0x00007f2198177000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f2197f16000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f2197cf0000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f2197aec000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2198b73000)
libattr.so.1 => /lib64/libattr.so.1 (0x00007f21978e7000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f21976ca000)
見てもよく分かりませんが、きっと、これが「/usr/bin/ls」ファイルの使っている共有ライブラリなのでしょう。
