2010-09-07 24 views

Respuesta

42

use nm -D --defined-only libname.so para obtener los nombres de los símbolos de su biblioteca dinámica.
El interruptor --defined-only muestra solo el símbolo que se define en estos archivos, y no las referencias a funciones externas.

Una alternativa es utilizar objdump, y coger sólo los símbolos en la sección de texto:

objdump -T /usr/lib/libjpeg.so | grep text 
... 
0001b5c0 g DF .text 00000016 Base  jdiv_round_up 
00003730 g DF .text 00000417 Base  jpeg_set_colorspace 
0000cda0 g DF .text 000002de Base  jpeg_consume_input 
00002b30 g DF .text 00000023 Base  jpeg_abort_compress 
00003b50 g DF .text 000000b6 Base  jpeg_default_colorspace 
00002810 g DF .text 00000067 Base  jpeg_suppress_tables 
00004110 g DF .text 00000130 Base  jpeg_add_quant_table 
000100c0 g DF .text 0000011f Base  jpeg_save_markers 
... 
+2

Esta debería ser la respuesta aceptada. –

+0

@Jack Kelly: La utilidad objdump parece más completa, pero ¿cuál es la diferencia con respecto al OP? –

+1

@Matt Joiner: La diferencia entre esta respuesta y la mía es la referencia a 'nm -D --defined-only'. 'nm -D' mostrará símbolos indefinidos y demás, que es solo ruido si desea ver lo que define la lib. –

13

Creo que nm -D es lo que estás buscando.

$ nm -D /usr/lib/libpng.so 
... 
00000000000058f0 T png_reset_zstream 
000000000000d420 T png_save_int_32 
000000000000d450 T png_save_uint_16 
000000000000d3f0 T png_save_uint_32 
0000000000007810 T png_set_IHDR 
0000000000007500 T png_set_PLTE 
000000000000ce20 T png_set_add_alpha 
0000000000006670 T png_set_asm_flags 
0000000000006970 T png_set_bKGD 
000000000001a740 T png_set_background 
... 
+0

He creado una biblioteca dinámica (lib * .so) y ha añadido unas cuantas funciones en it.so i necesita una línea de comando que muestre su contenido (es decir, las funciones) – Pavitar

4

Los nm -D comando lista los símbolos dinámicos de la biblioteca compartida, lo que parece ser exactamente lo que quiere.

Cuestiones relacionadas