2010-09-07 19 views

Répondre

42

utilisez nm -D --defined-only libname.so pour obtenir les noms des symboles de votre bibliothèque dynamique. Le commutateur --defined-only affiche uniquement le symbole défini dans ces fichiers et non les références aux fonctions externes.

Une alternative est d'utiliser objdump et attraper seulement les symboles dans la section texte:

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

Ceci devrait être la réponse acceptée. –

+0

@Jack Kelly: L'utilitaire objdump semble plus complet, mais quelle est la différence par rapport à l'OP? –

+1

@Matt Joiner: La différence entre cette réponse et la mienne est la référence à 'nm -D - defined-only'. 'nm -D' affichera des symboles non définis et ainsi de suite, ce qui n'est que du bruit si vous voulez voir ce que la lib elle-même définit. –

13

Je pense que nm -D est ce que vous cherchez.

$ 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

J'ai créé une bibliothèque dynamique (lib * .so fichier) et a ajouté quelques fonctions it.so i besoin d'une ligne de commande qui afficherait son contenu (ie les fonctions) – Pavitar

4

Les listes de commandes nm -D les symboles dynamiques de votre bibliothèque partagée, qui semble être exactement ce que vous voulez.