1. ホーム
  2. linux

[解決済み】Linuxで実行ファイルが使用しているすべての共有ライブラリを表示するには?

2022-04-04 06:18:44

質問

私のシステム上の実行ファイルがどのライブラリを使用しているかを知りたいです。具体的には、どのライブラリが一番使われているか、それを使っているバイナリと一緒にランキングしたいのです。どうすればよいでしょうか?

どのように解決するのですか?

  1. 使用方法 ldd をクリックすると、各実行ファイルの共有ライブラリの一覧が表示されます。
  2. 出力のクリーンアップ
  3. ソート、カウント計算、カウント順ソート

"/bin"ディレクトリにあるすべての実行可能ファイルの答えを見つけるためです。

find /bin -type f -perm /a+x -exec ldd {} \; \
| grep so \
| sed -e '/^[^\t]/ d' \
| sed -e 's/\t//' \
| sed -e 's/.*=..//' \
| sed -e 's/ (0.*)//' \
| sort \
| uniq -c \
| sort -n

上記の "/bin" を "/" に変更し、全ディレクトリを検索します。

出力は(/binディレクトリだけの場合)以下のようになります。

  1 /lib64/libexpat.so.0
  1 /lib64/libgcc_s.so.1
  1 /lib64/libnsl.so.1
  1 /lib64/libpcre.so.0
  1 /lib64/libproc-3.2.7.so
  1 /usr/lib64/libbeecrypt.so.6
  1 /usr/lib64/libbz2.so.1
  1 /usr/lib64/libelf.so.1
  1 /usr/lib64/libpopt.so.0
  1 /usr/lib64/librpm-4.4.so
  1 /usr/lib64/librpmdb-4.4.so
  1 /usr/lib64/librpmio-4.4.so
  1 /usr/lib64/libsqlite3.so.0
  1 /usr/lib64/libstdc++.so.6
  1 /usr/lib64/libz.so.1
  2 /lib64/libasound.so.2
  2 /lib64/libblkid.so.1
  2 /lib64/libdevmapper.so.1.02
  2 /lib64/libpam_misc.so.0
  2 /lib64/libpam.so.0
  2 /lib64/libuuid.so.1
  3 /lib64/libaudit.so.0
  3 /lib64/libcrypt.so.1
  3 /lib64/libdbus-1.so.3
  4 /lib64/libresolv.so.2
  4 /lib64/libtermcap.so.2
  5 /lib64/libacl.so.1
  5 /lib64/libattr.so.1
  5 /lib64/libcap.so.1
  6 /lib64/librt.so.1
  7 /lib64/libm.so.6
  9 /lib64/libpthread.so.0
 13 /lib64/libselinux.so.1
 13 /lib64/libsepol.so.1
 22 /lib64/libdl.so.2
 83 /lib64/ld-linux-x86-64.so.2
 83 /lib64/libc.so.6

編集 - "grep -P"を削除しました。