Cómo imprimir una lista de símbolos exportados desde una biblioteca dinámica


121

Así que he intentado que las bibliotecas dinámicas funcionen en mi proyecto XCode en Mac OS X. Hasta ahora no me ha gustado.

Puedo cargar el archivo dylib, pero cuando llamo a dlsym para obtener el puntero de la función, devuelve 0 y dlerror dice símbolo no encontrado.

Entonces, me pregunto si hay una forma sencilla de enumerar los símbolos que se exportan desde un archivo dylib. Cualquier idea sería genial.

Respuestas:


152

hombre 1 nm

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

Por ejemplo:

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

2
Bajo OS X Leopard (10.5, sí, lo sé ...) debería usar nm -gu, es decir, la -uopción está en minúsculas.
Laryx Decidua

4
man 1 nm es autónomo y seguirá funcionando cuando cambie la línea de comandos: p
MK.

9
@MK. man 1 nmenumera muchas cosas que se pueden hacer con nm. Una vez más, es un recurso externo que uno puede leer para descubrir una solución, pero no una solución en sí misma al solicitado "una forma sencilla de enumerar los símbolos que se exportan desde un archivo dylib" . " nm -gU ….dylib" Es, sin embargo.
Slipp D. Thompson

59

Utilice otool :

otool -TV your.dylib

O

nm -g your.dylib

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

Si bien es cierto que los otool -Tinformes functionality obsoleteen OS X más reciente, también es cierto que (para las bibliotecas dinámicas) objdump -tinformaránThe file was not recognized as a valid object file.
TML


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.