Commande Linux nm

Commande Linux Nm



Il existe différents cas où vous travaillez avec des fichiers objets ou des fichiers exécutables. De tels scénarios peuvent vous obliger à vérifier les symboles de votre fichier. Sous Linux, vous pouvez utiliser la commande « nom » pour afficher des informations sur les symboles disponibles dans votre objet ou fichier exécutable.

Selon sa page de manuel, la commande « nm » est utilisée pour « lister les symboles des fichiers objets ». La même commande fonctionne également avec les fichiers exécutables, et nous en discuterons en détail tout au long de la présentation d'aujourd'hui.







Comprendre la commande Linux Nm à l'aide de différents exemples

La commande « nm » n'est pas préinstallée dans certaines distributions Linux. Essayez de vérifier sa version avec la commande suivante pour voir si elle est installée :



$ nm --version



Si vous obtenez un résultat similaire à celui ci-dessous, cela signifie que « nm » n'est pas installé :





Alors, installez-le en utilisant « apt » avec la commande suivante. Assurez-vous de confirmer l'action en appuyant sur « y » lorsque vous y êtes invité :

$ sudo apte installer binutils



Vous pouvez maintenant vérifier que « nm » est disponible sur votre système en vérifiant à nouveau sa version.

Maintenant, vous avez installé avec succès « nm » sur votre système Linux. La prochaine chose est d'apprendre à l'utiliser pour obtenir des informations concernant vos fichiers objets cibles.

Exemple 1 : Exécution de la commande Nm

Avec « nm », lorsque vous l'exécutez, la commande recherche un fichier nommé « a.out » qui est un fichier objet exécutable. S'il est trouvé, il affiche alors les symboles contenus.

$ nm

Cependant, si vous n'avez pas de fichier de ce type dans le répertoire actuel, vous obtiendrez une sortie comme indiqué dans l'image suivante :

Créons un fichier C++ puis compilons-le en utilisant g++. Lorsque nous le faisons, nous obtenons un fichier « a.out » que nous pouvons utiliser avec la commande « nm ».

Si nous réexécutons la commande « nm », notez que nous obtenons une sortie qui affiche tous les symboles de notre fichier objet. C'est ainsi que fonctionnent les commandes « nm ».

Exemple 2 : affichage de symboles spécifiques

Il est possible de trouver un symbole spécifique dans votre fichier objet. Si vous n'avez qu'un seul fichier objet, comme dans notre cas, et que vous souhaitez trouver le symbole « principal », exécutez votre commande comme suit :

$ nm -UN a.out | poignée principal

Cependant, si vous disposez de plusieurs fichiers objets ou exécutables, modifiez votre commande pour qu'elle apparaisse comme suit :

$ nm -UN * .dehors | poignée principal

Exemple 3 : Afficher les symboles non définis

Avec l'option « -u », il est possible d'obtenir uniquement les symboles non définis dans votre fichier objet. Voici un exemple où nous ajoutons l'option « -u » lors de l'exécution de la commande :

$ nm -dans a.out

Notez que le résultat que nous obtenons est plus petit et c'est parce que tous les symboles ne sont pas affichés, uniquement ceux qui ne sont pas définis.

Exemple 4 : Afficher la taille d'un symbole

Vous pouvez rechercher un symbole particulier et afficher sa taille. Pour cela, utilisez l'option « -s ». Cherchons l'objet « abi » dans notre cas et voyons ce que nous obtenons.

$ nm -S | poignée abi

Seuls les symboles correspondant à vos critères de recherche sont affichés ainsi que leur taille.

Exemple 5 : obtenir les symboles dynamiques

L'option « -D » spécifie que seuls les symboles dynamiques doivent être affichés dans la sortie. Dans l'image suivante, nous pouvons voir qu'après l'ajout de « -D », notre sortie est réduite puisque seuls les symboles dynamiques sont imprimés :

Exemple 6 : Modification du format de sortie

Le format de sortie par défaut utilisé par « nm » est le « bsd ». Cependant, vous pouvez spécifier un format différent en utilisant l'option « -f ». Par exemple, si nous voulons utiliser le format posix, exécutez notre commande « nm » comme suit :

$ nm -F posix a.out

Exemple 7 : Travailler avec un fichier

Au lieu de spécifier chaque option que vous souhaitez utiliser avec la commande « nm » sur le terminal, vous pouvez utiliser un fichier. Le fichier contient les options et vous ajoutez le fichier lors de l'exécution de la commande « nm ». La commande vérifie toutes les options du fichier et effectue l'action nécessaire.

Voici un exemple de fichier « file1 » contenant l'option « -g –size-sort ».

Pour référencer le fichier, exécutez la commande comme indiqué ci-dessous :

$ nm @ fichier1

Lorsque la commande s'exécute, vous obtiendrez le résultat souhaité. Dans ce cas, nous trions les symboles et ajoutons l'option « -g » pour obtenir les symboles externes et ignorer le reste.

Conclusion

La commande « nm » permet aux utilisateurs de travailler avec des symboles. Vous pouvez utiliser la commande pour afficher tous les symboles dans un fichier exécutable ou objet. Cet article expliquait la commande « nm ». En outre, nous avons fourni différents exemples pour vous assurer que vous êtes à l'aise avec la commande. Espérons que la commande « nm » soit désormais claire.