OSX には ldd がない
>前にも似たようなことで困惑した記憶があるけれども、 ELF ではない OSX には ldd とか、 GNU/Linux などではごくごく日常的に使われているツールがない。ので、リンクしているライブラリを調べる方法がわからなくて困惑した。
>
>で、結論としては OSX では otool というツールを使う。 Mach-O またはユニバーサルバイナリのオブジェクトファイルから、所定の情報を取得する、というツールで、取得する情報の種類に応じてオプションを指定する。 ldd 相当のことをするなら -L オプションだ。
>
>% otool -L =estmaster
/usr/local/bin/estmaster:
/usr/local/lib/libestraier.8.dylib (compatibility version 8.0.0, current version 8.34.0)
/sw/lib/libmecab.1.dylib (compatibility version 2.0.0, current version 2.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 369.6.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.4)
/usr/local/lib/libqdbm.14.dylib (compatibility version 14.0.0, current version 14.10.0)
/sw/lib/libbz2.1.dylib (compatibility version 1.0.1, current version 1.0.3)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
/sw/lib/libiconv.2.dylib (compatibility version 6.0.0, current version 6.0.0) > >……のように出てくる。はずである(`=コマンド名'という表現がコマンドのパスに置換されるのは zsh の独自機能のひとつだけど)。というわけで目的は達成されてよかったよかった。 > >L オプション以外に何があるかというと、うーんと、まあ、いっぱいある。ヘッダ情報を見たり、特定のセグメントの中身を見たり、そういったあたりの最近ちょっと流行りっぽいことだ。必要に応じて man すると良いと思う。 > >という自分用メモでした。これ以上のちゃんとした解説は、 Mach-O 形式を勉強した方がいいだろうな。 >
/usr/local/bin/estmaster:
/usr/local/lib/libestraier.8.dylib (compatibility version 8.0.0, current version 8.34.0)
/sw/lib/libmecab.1.dylib (compatibility version 2.0.0, current version 2.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 369.6.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.4)
/usr/local/lib/libqdbm.14.dylib (compatibility version 14.0.0, current version 14.10.0)
/sw/lib/libbz2.1.dylib (compatibility version 1.0.1, current version 1.0.3)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
/sw/lib/libiconv.2.dylib (compatibility version 6.0.0, current version 6.0.0) > >……のように出てくる。はずである(`=コマンド名'という表現がコマンドのパスに置換されるのは zsh の独自機能のひとつだけど)。というわけで目的は達成されてよかったよかった。 > >L オプション以外に何があるかというと、うーんと、まあ、いっぱいある。ヘッダ情報を見たり、特定のセグメントの中身を見たり、そういったあたりの最近ちょっと流行りっぽいことだ。必要に応じて man すると良いと思う。 > >という自分用メモでした。これ以上のちゃんとした解説は、 Mach-O 形式を勉強した方がいいだろうな。 >