お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

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

ブログ(Blog)

その他

関連サイト

: 個別エントリー・アーカイブ :

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     2007年9月12日 22:46

トラックバック

このエントリーのトラックバックURL:
http://www.skymerica.com/blog/yotsumoto/mt/mt-tb.cgi/920


コメント

コメントしてください




保存しますか?


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