動的ライブラリからエクスポートされたシンボルのリストを印刷する方法


120

そのため、Mac OS XのXCodeプロジェクトで動的ライブラリーを機能させるように努めてきました。これまでのところ、喜びはありません。

dylibファイルをロードすることはできますが、dlsymを呼び出して関数ポインターを取得すると、0が返され、dlerrorはシンボルが見つかりませんでした。

したがって、dylibファイルからエクスポートされるシンボルをリストする簡単な方法があるかどうか疑問に思っています。どんなアイデアでもいいです。

回答:


152

男性1 nm

https://web.archive.org/web/20160316222941/https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/nm.1.html

例えば:

nm -gU /usr/local/Cellar/cairo/1.12.16/lib/cairo/libcairo-trace.0.dylib

2
OS X Leopard(10.5、ええ、わかっています...)では、を使用する必要がありますnm -gu。つまり、-uオプションは小文字です。
Laryx Decidua

4
man 1 nmは自己完結型であり、コマンドラインが変更されても動作し続けます:p
MK。

9
@MK。man 1 nmnmで実行できる多くのことをリストします。繰り返しますが、これはソリューションを発見するために読み取ることができる外部リソースですが、要求された「dylibファイルからエクスポートされるシンボルをリストする簡単な方法」に対するソリューション自体ではありません。「nm -gU ….dylib」は、ただしです。
Slipp D. Thompson

58

otoolを使用します

otool -TV your.dylib

または

nm -g your.dylib

4
新しいmacOSでは、otool -Tはotool: -T functionality obsoleteuse objdump -t を表示します
joseph.smeng

それがいることは事実だがotool -T、レポートfunctionality obsoleteの新しいOS Xでは、それは(ダイナミックライブラリのため)ことも事実だobjdump -t報告しますThe file was not recognized as a valid object file.
TML


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.