lddコマンドの使い方:Linuxのライブラリ依存関係を調査

プログラミング

はじめに

LinuxやUNIX系システムを利用する際、共有ライブラリの依存関係を確認する必要が出てくることがある。
このとき活躍するのが ldd コマンドである。

本記事では、ldd コマンドの概要や使用方法、オプションについて解説し、さらにその活用シーンを詳しく紹介する。


スポンサーリンク
スポンサーリンク

ldd コマンドとは

ldd コマンドは、指定された実行可能ファイルや共有ライブラリが依存している共有ライブラリを一覧表示するためのコマンドである。
これは、プログラムが正しく動作するために必要な共有ライブラリを確認する上で非常に便利だ。

共有ライブラリ(shared library)とは、複数のプログラムから共通して利用できる部品の集まりのことである。
このコマンドを利用すれば、「このプログラムはどのライブラリを使用しているのか?」を簡単に把握できる。


ldd コマンドの基本構文

ldd [オプション] <対象のファイル>

使用例

libtokyocabinet.so の依存関係を確認する例を示す。

ldd libtokyocabinet.so

結果の例:

libbz2.so.1 => /usr/lib64/libbz2.so.1 (0x00002b859cd82000)
libz.so.1 => /usr/lib64/libz.so.1 (0x00002b859cf92000)
librt.so.1 => /lib64/librt.so.1 (0x00002b859d1b7000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b859d3c1000)
libm.so.6 => /lib64/libm.so.6 (0x00002b859d5dc000)
libc.so.6 => /lib64/libc.so.6 (0x00002b859d85f000)
/lib64/ld-linux-x86-64.so.2 (0x0000003a03000000)

結果の構成:
左側: 依存するライブラリ名
右側: 実際にロードされるライブラリのパスとアドレス


共有ライブラリの基礎知識

ldd コマンドを使いこなすためには、共有ライブラリに関する基本的な知識も重要だ。

  • 共有(shared): 複数のプログラムが同じライブラリを利用することを指す。
  • ライブラリ(library): プログラムの部品をひとまとめにしたファイル。再利用可能な関数やデータが格納されている。
  • 共有ライブラリ(shared library): 複数のプログラム間で共通利用できるライブラリ。.so(shared object)という拡張子を持つことが多い。

ldd コマンドの主なオプション

ldd にはいくつかのオプションが用意されており、特定のニーズに応じて使い分けることができる。

オプション 説明
-d / --data-relocs データ再配置を処理する
-r / --function-relocs データと関数の再配置を処理する
-u / --unused 使用されていない直接依存関係を表示する
-v / --verbose 詳細な情報を表示する
--help ヘルプを表示する
--version バージョン情報を表示する

例: 詳細情報を表示

以下のコマンドで、対象ファイルに関する詳細情報を表示する。

ldd -v libtokyocabinet.so

活用シーンと問題解決

  1. 依存関係の確認
    新しいプログラムをインストールしたとき、そのプログラムが依存するライブラリがシステム上に存在するか確認するために使用する。
ldd my_application

結果に not found と表示された場合、該当するライブラリがシステムにインストールされていない可能性がある。

  1. ライブラリパスの設定
    ライブラリが見つからない場合は、次の手順でパスを設定する:

/etc/ld.so.conf または /etc/ld.so.conf.d/ にパスを追加。
– 設定後に ldconfig コマンドを実行してキャッシュを更新。

echo "/path/to/your/library" | sudo tee -a /etc/ld.so.conf
sudo ldconfig
  1. 使用されていないライブラリの検出
    -u オプションを使用して、不要な直接依存関係を確認できる。
ldd -u my_application

まとめ

ldd コマンドは、Linux環境でのライブラリ依存関係を調査する上で欠かせないツールである。
特に、プログラムの動作不具合やライブラリの欠如といった問題を迅速に特定し、解決する助けとなる。オプションを活用することで、詳細な情報や未使用ライブラリの確認など、より高度な使い方も可能だ。

初心者から上級者まで幅広いユーザーにとって、知っておくべき重要なコマンドの一つであるといえる。

コメント