2010-12-22 12 views
131

Quiero ver las funciones exportadas de una biblioteca compartida en Linux.¿Cómo veo la lista de funciones que está exportando una biblioteca compartida de Linux?

¿Qué comando me permite hacer esto?

(En Windows utilizo el programa depende)

+0

una pregunta similar: [¿Cómo puedo saber qué se exportan todos los símbolos desde un objeto compartido?] (Http://stackoverflow.com/questions/1237575/how-do-i-find-out-what-all -symbols-are-exported-from-a-shared-object) –

Respuesta

209

Lo que se necesita es nm y su opción -D:

$ nm -D /usr/lib/libopenal.so.1 
. 
. 
. 
00012ea0 T alcSetThreadContext 
000140f0 T alcSuspendContext 
     U atanf 
     U calloc 
. 
. 
. 

sumbols exportados se indican mediante un T. Los símbolos obligatorios que se deben cargar desde otros objetos compartidos tienen un U. Tenga en cuenta que la tabla de símbolos no incluye solo funciones, sino también variables exportadas.

Consulte nmmanual page para obtener más información.

+10

O si solo desea ver los símbolos exportados, agregue el indicador "--defined-only". por ejemplo: "nm -D --defined-only /lib/libtest.so" –

+6

'--demangle' funcionó para mí. – vmrob

+2

En Mac OS X simplemente use 'nm' sin el indicador' -D'. – JPaget

26

objdump -T *.so también puede hacer el trabajo

+6

@gotqn: ¿qué te hace pensar que esto no es una respuesta? –

2

en un Mac, es necesario utilizar nm *.o | c++filt, ya que no hay ninguna opción en -Cnm.

Cuestiones relacionadas