LoginSignup
1
0

実行ファイルが動的にリンクしているライブラリを知りたい

Last updated at Posted at 2024-03-08

ある実行ファイル1が実行時に動的にどのような共有ライブラリをリンクしているか知りたくなる2ことはよくあるかと思います。そんな時のために。

WindowsやLinuxについては、すみませんが私にとっては今必要というわけではない3ので、ご自分で調べてください。

また、恒例のお断りですが、この文章の内容は、筆者が所属している会社・団体とは一切関わりがありません。いわゆる「自主的な研究の成果の発表」というものです。

macOS

otool または objdump。

otoolなら-Lを指定します。

$ otool -L a.out 
a.out:
        /usr/lib/libsqlite3.dylib (compatibility version 9.0.0, current version 349.1.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1336.0.0)

objdumpなら--machoと--dylibs-usedを指定。

$ objdump --macho --dylibs-used a.out 
a.out:
        /usr/lib/libsqlite3.dylib (compatibility version 9.0.0, current version 349.1.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1336.0.0)

FreeBSD(GhostBSD)

ldd。
オプションを何も指定しなければ、直接リンクしているものを表示します。4

$ ldd a.out 
a.out:
	librt.so.1 => /lib/librt.so.1 (0x17a84ba2f000)
	libm.so.5 => /lib/libm.so.5 (0x17a84d100000)
	libc.so.7 => /lib/libc.so.7 (0x17a84c8ef000)
	libthr.so.3 => /lib/libthr.so.3 (0x17a84e03d000)
	[vdso] (0x17a84b094000)

-aを指定すると、間接的にリンクしているものも表示します。

$ ldd -a a.out 
a.out:
	librt.so.1 => /lib/librt.so.1 (0x374245100000)
	libm.so.5 => /lib/libm.so.5 (0x374245723000)
	libc.so.7 => /lib/libc.so.7 (0x37424722f000)
/lib/librt.so.1:
	libthr.so.3 => /lib/libthr.so.3 (0x374245b87000)
	libc.so.7 => /lib/libc.so.7 (0x37424722f000)
/lib/libm.so.5:
	libc.so.7 => /lib/libc.so.7 (0x37424722f000)
/lib/libthr.so.3:
	libc.so.7 => /lib/libc.so.7 (0x37424722f000)
[preloaded]
	[vdso] (0x37424501a000)
  1. 「実行ファイル」と書きましたが、ライブラリに対しても使えるようです。

  2. ライブラリがGPL(やLGPL)のOSSだったらとっても気になりますよね。まあ今回の発端はそうではないのですが。

  3. macOSやFreeBSD(GhostBSD)だけなら、こんな覚書は必要ないのかもしれないです。が、macOSとFreeBSD(GhostBSD)を行き来して作業していると、Macでlddを使おうとして「コマンドが見つかりません」となる(その逆もあり)からです。

  4. 対象ファイルの名前がa.outとmacOSのものと同じですけど、中身は異なるものです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0