GNU/Linux >> Tutoriels Linux >  >> Linux

Comment afficher la liste des fonctions qu'une bibliothèque partagée Linux exporte ?

Sur un MAC, vous devez utiliser nm *.o | c++filt , car il n'y a pas de -C option dans nm .


Ce dont vous avez besoin est nm et son -D choix :

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

Les symboles exportés sont indiqués par un T . Les symboles requis qui doivent être chargés à partir d'autres objets partagés ont un U . Notez que la table des symboles n'inclut pas seulement les fonctions, mais également les variables exportées.

Voir le nm page de manuel pour plus d'informations.


Parmi les autres outils déjà mentionnés, vous pouvez également utiliser readelf (manuel). Il est similaire à objdump mais va plus dans le détail. Voir ceci pour l'explication de la différence.

$ readelf -sW /lib/liblzma.so.5 |head -n10

Symbol table '.dynsym' contains 128 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (4)
     2: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (4)
     3: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_deregisterTMCloneTable
     4: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (5)
     5: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (5)
     6: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (5)

objdump -T *.so peut aussi faire le travail


Linux
  1. Comment lister les dépendances d'un paquet sous Linux

  2. Introduction aux bibliothèques partagées Linux (comment créer des bibliothèques partagées)

  3. Comment initialiser une bibliothèque partagée sous Linux

  4. Comment lister à la volée toutes les fonctions/symboles disponibles en code C sur une architecture Linux ?

  5. Comment faire un délai de bibliothèque partagée chargé sur Linux

Comment lister les membres d'un groupe sous Linux

Comment afficher le contenu d'une archive ou d'un fichier compressé sous Linux

Comment répertorier les bibliothèques partagées utilisées par les exécutables sous Linux

Comment changer le shell par défaut dans le système Linux

Comment afficher ou répertorier les tâches Cron sous Linux

Comment trouver la liste des référentiels installés sous Linux