Como imprimir uma lista de símbolos exportados de uma biblioteca dinâmica


121

Então, tenho tentado fazer com que as bibliotecas dinâmicas funcionem em meu projeto XCode no Mac OS X. Até agora, nenhuma alegria.

Consigo carregar o arquivo dylib, mas quando chamo dlsym para obter o ponteiro da função, ele retorna 0 e dlerror diz que o símbolo não foi encontrado.

Portanto, gostaria de saber se existe uma maneira simples de listar os símbolos que são exportados de um arquivo dylib. Qualquer ideia seria ótima.

Respostas:


152

homem 1 nm

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

Por exemplo:

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

2
No OS X Leopard (10.5, sim, eu sei ...) você deve usar nm -gu, ou seja, a -uopção está em minúsculas.
Laryx Decidua

4
man 1 nm é independente e continuará trabalhando quando a linha de comando mudar: p
MK.

9
@MK. man 1 nmlista muitas coisas que podem ser feitas com nm. Novamente, é um recurso externo que pode ser lido para descobrir uma solução, mas não uma solução em si para o solicitado “uma maneira simples de listar os símbolos que são exportados de um arquivo dylib” . “ nm -gU ….dylib” É, no entanto.
Slipp D. Thompson

59

Use otool :

otool -TV your.dylib

OU

nm -g your.dylib

4
No novo macOS, otool -T mostrará otool: -T functionality obsoleteuse objdump -t
joseph.smeng

Embora seja verdade que os otool -Trelatórios functionality obsoleteno OS X mais recente, também é verdade que (para bibliotecas dinâmicas) objdump -tirá relatarThe file was not recognized as a valid object file.
TML


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.