GNU/Linux >> Tutoriels Linux >  >> Linux

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

Sous un environnement de système d'exploitation Linux, les exécutables binaires associés aux applications/programmes que vous souhaitez exécuter sont directement liés aux bibliothèques partagées chargées au moment de l'exécution.

En tant qu'utilisateur Linux curieux et évolutif, vous serez tenté de vous faire une idée de ces bibliothèques partagées impliquées/liées aux exécutables binaires que vous exécutez lors d'un démarrage normal du programme.

Cet article nous guidera à travers plusieurs approches pour découvrir toutes les bibliothèques partagées utilisées par les exécutables sous Linux.

Brève présentation des bibliothèques Linux

Un programmeur ou un utilisateur familier avec le monde de la programmation définira une bibliothèque comme des morceaux/segments de code précompilés assemblés de manière/format organisée. La nature/l'attribut pré-compilé d'une bibliothèque la rend flexible et facilement réutilisable entre différents programmes.

Sous l'architecture du système d'exploitation Linux, nous pouvons classer les bibliothèques comme étant soit statiques (bibliothèques statiques ) ou partagé (bibliothèques partagées ).

Les bibliothèques statiques sont liées statiquement à un programme spécifique et ne sont accessibles que pendant le temps de compilation du programme. Les bibliothèques partagées deviennent actives une fois qu'un programme est lancé et résideront en mémoire pendant la durée d'exécution du programme.

Comment rechercher les bibliothèques partagées d'un programme sous Linux

Avant de déterminer les bibliothèques partagées associées à votre programme ciblé, vous devez d'abord savoir où réside l'exécutable associé à votre programme. Sous Linux, l'emplacement des exécutables de vos programmes se trouve généralement dans /usr/bin répertoire.

$ ls -l /usr/bin

La colonne à l'extrême droite répertorie les noms des exécutables de vos programmes.

Rechercher les bibliothèques partagées du programme Linux à l'aide de la commande ldd

Le ldd La commande existe sous la forme d'un script shell simple qui pointe vers les bibliothèques partagées d'un programme. Selon la capture d'écran ci-dessus, essayons par exemple de sortir les bibliothèques partagées associées à l'application anydesk.

Nous pourrions déterminer l'emplacement de l'exécutable d'Anydesk avec la commande :

$ whereis anydesk

Pour déterminer ses bibliothèques partagées via le ldd commande, nous allons exécuter :

$ ldd /usr/bin/anydesk 

Comme vous pouvez le voir, nous avons une liste de nombreuses bibliothèques associées à anydesk application. Veuillez noter que le ldd La commande a tendance à exécuter les programmes interrogés pour récupérer les informations sur les bibliothèques partagées. Par conséquent, n'associez la commande qu'à des exécutables de confiance.

Rechercher des bibliothèques partagées de programmes à l'aide des commandes objdump et grep

Le objdump commande faisant partie de GNU Binutils se concentrera sur l'affichage des informations sur les fichiers objets tandis que le grep listera les bibliothèques partagées associées au programme.

Voyons ce que ces commandes donneront pour un programme comme whois utilisé pour les informations sur les noms de domaine.

$ whereis whois 

Ensuite, découvrez les bibliothèques partagées du programme.

$ objdump -p /usr/bin/whois | grep 'NEEDED'

Comme vous pouvez le voir, le whois l'exécutable du programme de recherche de domaine est associé à deux bibliothèques partagées.

Alternativement, vous pouvez également utiliser le readelf commande pour récupérer les informations partagées pour l'exécutable du programme zip.

$ whereis zip
$ readelf --dynamic /usr/bin/zip | grep NEEDED

Selon la sortie, le zip l'exécutable du programme est associé à deux bibliothèques partagées.

Rechercher des bibliothèques partagées à l'aide de la commande Awk

Cette option est idéale pour un programme qui est déjà en cours d'exécution. Nous devons d'abord obtenir son PID (ID de processus ). Par exemple, disons que nous avons le Flameshot utilitaire de capture d'écran en cours d'exécution.

Pour obtenir son PID , nous exécuterons :

$ pgrep flameshot 

45261

Nos /proc//maps le fichier sera transformé en /proc/45261/maps . Nous pouvons maintenant combiner ce fichier avec le awk commande pour récupérer Flameshot bibliothèques partagées exécutables, comme illustré ci-dessous.

$ awk '$NF!~/\.so/{next} {$0=$NF} !a[$0]++' /proc/45261/maps

Nous sommes maintenant bien familiarisés avec la liste de toutes les bibliothèques partagées associées aux exécutables de programmes sous Linux.


Linux
  1. Comment gérer et répertorier les services sous Linux

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

  3. Comment afficher toutes les bibliothèques partagées utilisées par les exécutables sous Linux ?

  4. Suppression des bibliothèques partagées Linux

  5. Comment répertorier les processus attachés à un segment de mémoire partagée sous Linux ?

Comment répertorier les packages installés sous Linux

Comment répertorier les partitions de disque sous Linux

Comment lister les membres d'un groupe sous Linux

Comment répertorier les utilisateurs sous Linux

Comment lister les disques sous Linux

Comment répertorier les services sous Linux