web-dev-qa-db-fra.com

Ligne de commande pour voir le contenu du module d'objets partagés (lib * .so)

Quelle est la ligne de commande pour voir le contenu d'un module d'objet partagé (lib * .so)?

Comme la façon dont nous utilisons:

ar -t lib*.a

pour les archives (lib * .a) et affiche tous les fichiers objets de la bibliothèque.

EDIT1

Exemple

ar -t lib*.a

me donne un affichage:

asset.o

sldep.o

30
Pavitar

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

Une alternative consiste à utiliser objdump et à capturer uniquement les symboles dans la section de 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
...
48
shodanex

Je pense nm -D est ce que vous recherchez.

$ 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
...
14
Jack Kelly

La commande nm -D Répertorie les symboles dynamiques de votre bibliothèque partagée, ce qui semble être exactement ce que vous voulez.

4
herzrasen