2010-09-07 11 views

risposta

42

utilizzare nm -D --defined-only libname.so per ottenere i nomi dei simboli dalla libreria dinamica.
Lo switch --defined-only mostra solo il simbolo definito in questi file e non i riferimenti a funzioni esterne.

Un'alternativa è quella di usare objdump, e prendere solo i simboli nella sezione di testo:

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

Questa dovrebbe essere la risposta accettata. –

+0

@Jack Kelly: L'utilità objdump sembra più completa, ma qual è la differenza rispetto all'OP? –

+1

@Matt Joiner: la differenza tra questa risposta e la mia è il riferimento a 'nm -D --defined-only'. 'nm -D' visualizzerà simboli non definiti e così via, che è solo rumore se vuoi vedere cosa definisce la lib stessa. –

13

Penso che nm -D sia quello che stai cercando.

$ 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

Ho creato una libreria dinamica (lib * .so file) e ha aggiunto alcune funzioni in it.so i bisogno di una riga di comando che dovrebbe visualizzare il suo contenuto. (cioè le funzioni) – Pavitar

4

I nm -D comando elenca i simboli dinamici della vostra libreria condivisa, che sembra essere esattamente quello che vuoi.