書式
ldd [OPTION]... FILE...説明
ldd はコマンドラインで指定したプログラムや共有ライブラリについて、 それぞれで必要とされる共有ライブラリを表示する。セキュリティ
通常の場合、 ldd は標準の動的リンカ (ld.so(8) 参照) を LD_TRACE_LOADED_OBJECTS 環境変数に 1 をセットして起動する。 LD_TRACE_LOADED_OBJECTS に 1 をセットすると、リンカはライブラリの依存関係を表示する。但し、状況次第では、依存関係の情報を得るのにプログラムを直接実行するバージョンの ldd が存在する。したがって、信頼できない実行ファイルに対しては「決して」 ldd を使っては「ならない」。任意のコードを実行することにつながるからである。信頼できない実行ファイルを扱う、より安全な別の方法としては次のようにするとよい。
$ objdump -p /path/to/program | grep NEEDED
オプション
- --version
- ldd のバージョン番号を表示する。
- -v --verbose
- シンボルのバージョン情報などを含めた全ての情報を表示する。
- -u --unused
- 使用されていない直接の依存関係を表示する (glibc 2.3.4 以降)。
- -d --data-relocs
- リロケーションを実行し、足りないオブジェクトについてレポートする (ELF のみ)。
- -r --function-relocs
- 足りないオブジェクトや関数についてレポートする (ELF のみ)。
- --help
- 使用法を表示する。
注意
標準的なバージョンの ldd は glibc2 に付属している。 libc5 には古いバージョンのものが付属しており、 これが入っているシステムもまだ存在する。 libc5 バージョンではロングオプションがサポートされていない。 一方、glibc2 バージョンでは -V をサポートしておらず、これと同じ意味の --version しかサポートしていない。libc5 バージョンのプログラムでは、 コマンドラインで与えられたライブラリ名に '/' が含まれている場合は、ライブラリ名をそのまま用いる。 '/' が含まれていない場合は、標準的なパスからライブラリを検索する。 カレントディレクトリにある共有ライブラリに対して実行するには、 名前にプレフィックス "./" を付けること。
バグ
ldd は a.out 共有ライブラリでは動作しない。ldd は非常に古い a.out プログラム (ldd のサポートがコンパイラに追加される以前にビルドされたようなプログラム) では動作しない。 このようなプログラムに対して ldd を用いると、プログラムは argc = 0 で実行される。結果は予想不可能である。
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。