お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

ハワイ島 情報・観光ガイド

ブログ(Blog)

その他

関連サイト

: 日付別 アーカイブ :

2007年9月12日

2007年9月12日

プログラムがロードする共有ライブラリを表示する「 ldd 」コマンド

FreeBSDをはじめとする UNIX系の ほとんどのプログラムは、 共有ライブラリ(共有オブジェクト)を動的にリンクして動作する。 場合によっては、あるプログラムが、 どのような共有ライブラリをロードするのかを知りたい場合がある。 そのような時に、一覧で表示してくれるのが、この「 ldd 」コマンドである。

詳細は、マニュアルの 「ldd -- 依存する共有オブジェクトの一覧」 などに書いてあるので、 ここでは具体例をみてみることにする。 まずは ls コマンド。
%  which ls
/bin/ls
% ldd /bin/ls
/bin/ls:
        libutil.so.5 => /lib/libutil.so.5 (0x2807f000)
        libncurses.so.6 => /lib/libncurses.so.6 (0x2808b000)
        libc.so.6 => /lib/libc.so.6 (0x280cc000)
このように、/bin/ls コマンドは、 「libutil.so.5」、「libncurses.so.6」、「libc.so.6」の 3つの共有ライブラリをロードし、 それぞれは、/lib ディレクトリに存在していることがわかる。

また、ldd には 「 -a 」オプションというのがあり、このオプションをつけると 各ロードオブジェクトが必要とするすべてのオブジェクトの一覧を表示してくれる。 例えば、
% ldd -a /usr/local/bin/ruby
/usr/local/bin/ruby:
        libruby18.so.18 => /usr/local/lib/libruby18.so.18 (0x2807a000)
        libcrypt.so.3 => /lib/libcrypt.so.3 (0x28138000)
        libm.so.4 => /lib/libm.so.4 (0x28150000)
        libpthread.so.2 => /lib/libpthread.so.2 (0x28166000)
        libc.so.6 => /lib/libc.so.6 (0x2818b000)
/usr/local/lib/libruby18.so.18:
        libcrypt.so.3 => /lib/libcrypt.so.3 (0x28138000)
        libm.so.4 => /lib/libm.so.4 (0x28150000)
のように、「 libruby18.so.18 」から、 「 libcrypt.so.3 」と「 libm.so.4 」が呼ばれているのがわかる。

それから、lddコマンドは、実行ファイルだけでなく共有オブジェクトにも対応しているので、 上記の例では、共有ライブラリである「 /usr/local/lib/libruby18.so.18 」についてみてみると、
% ldd /usr/local/lib/libruby18.so.18
/usr/local/lib/libruby18.so.18:
        libcrypt.so.3 => /lib/libcrypt.so.3 (0x28223000)
        libm.so.4 => /lib/libm.so.4 (0x2823b000)
のように表示される。

【参考リンク】

カテゴリー: FreeBSD     22:46 | コメント (0) | トラックバック (0)

 
ハワイ島での遊覧飛行ツアーとB&Bのスペシャリスト、スカイメリカ
Copyright © 2003,2009 Skymerica Corp. All rights reserved.