Linux Command · 5 min read · Sep 14, 2025

Tutoriel sur la commande nm de Linux pour les débutants (10 exemples)

Si vous êtes un utilisateur de Linux qui s’intéresse également à la programmation et au développement de logiciels au niveau système, vous pourriez vous retrouver dans des situations où vous avez besoin d’informations relatives aux symboles dans un fichier objet. Vous serez heureux d’apprendre qu’il existe un utilitaire en ligne de commande - appelé nm - que vous pouvez utiliser dans ces situations.

Dans ce tutoriel, nous allons discuter des bases de cet outil à l’aide de quelques exemples faciles à comprendre. Mais avant cela, il convient de mentionner que tous les exemples ici ont été testés sur une machine Ubuntu 22.04 LTS.

Commande nm de Linux

L’utilitaire en ligne de commande nm liste essentiellement les symboles des fichiers objets. Voici la syntaxe de l’outil :

nm [OPTIONS] NOM-DU-FICHIER-OBJET

Et voici comment la page de manuel de la commande explique cela :

       GNU nm liste les symboles des fichiers objets objfile....  Si aucun fichier objet n'est listé comme argument, nm suppose le fichier a.out.

Voici quelques exemples sous forme de questions-réponses qui vous donneront une meilleure idée de la façon dont nm fonctionne.

Q1. Comment fonctionne la commande nm ?

L’utilisation de base de cette commande est très simple - tout ce que vous avez à faire est d’exécuter la commande ‘nm’ et de passer le nom du fichier objet en entrée. Par exemple, j’ai utilisé la commande nm avec le fichier binaire ‘apl’ :

nm apl

La capture d’écran suivante montre le type de sortie que la commande ci-dessus a produite :

Les trois colonnes produites dans la sortie représentent respectivement la valeur du symbole, le type de symbole et le nom du symbole. Il existe plusieurs types de symboles - pour connaître tous les détails, rendez-vous sur la page de manuel de la commande nm.

Q2. Comment faire en sorte que les noms de fichiers précèdent chaque symbole dans la sortie ?

Vous pouvez le faire en utilisant l’option de ligne de commande -A.

nm -A [fichier-obj]

Par exemple :

nm -A apl

Vous pouvez donc voir que le nom du fichier a été ajouté au début de chaque ligne.

Q3. Comment faire en sorte que nm affiche également les symboles de débogage ?

Pour faire en sorte que nm affiche également les symboles de débogage dans la sortie, utilisez l’option de ligne de commande -a.

nm -a [nom-fichier-objet]

Par exemple :

nm -a apl

La commande ci-dessus affichera tous les symboles, y compris les symboles réservés aux débogueurs qui ne sont normalement pas listés.

Q4. Comment faire en sorte que nm décode les noms de symboles de bas niveau ?

Si vous le souhaitez, vous pouvez même forcer nm à décoder les noms de symboles de bas niveau en noms de niveau utilisateur. Vous pouvez le faire en utilisant l’option de ligne de commande -C.

nm -C [fichier-obj]

Par exemple :

nm -C apl

Voici ce que la page de manuel dit à propos de cette option :

           En plus de supprimer tout soulignement initial ajouté par le système,  
           cela rend les noms de fonctions C++ lisibles. Différents compilateurs ont  
           différents styles de mangle. L'argument de style de démangling optionnel  
           peut être utilisé pour choisir un style de démangling approprié pour votre  
           compilateur.

Q5. Comment faire en sorte que nm n’affiche que les symboles dynamiques ?

Dans le cas où vous souhaitez que nm n’affiche que les symboles dynamiques, plutôt que les symboles normaux, utilisez l’option de ligne de commande -D.

nm -D [fichier-obj]

Par exemple :

nm -D apl

Vous pouvez donc voir que nm a uniquement produit des symboles dynamiques dans la sortie.

Q6. Comment utiliser différents formats de sortie nm ?

Pour activer différents formats de sortie, utilisez l’option de ligne de commande -f. Par défaut, la sortie est produite au format bsd, cependant, si vous le souhaitez, vous pouvez également activer les formats ‘sysv’ et ‘posix’.

nm -f [format] [nom-fichier-objet]

Par exemple :

nm -f posix apl

Observez le changement de format maintenant.

Q7. Comment faire en sorte que nm n’affiche que les symboles externes ?

Vous pouvez y parvenir en utilisant l’option de ligne de commande -g.

nm -g [fichier-obj]

Par exemple :

nm -g  apl

Q8. Quelles options de tri nm fournit-il ?

Par défaut, les symboles sont triés par ordre alphabétique. Cependant, si vous le souhaitez, vous pouvez les trier numériquement par leurs adresses en utilisant l’option de ligne de commande -n.

nm -n [fichier-obj]

Par exemple :

nm -n apl

Vous pouvez donc voir que la sortie est maintenant triée par adresses.

Dans le cas où vous ne souhaitez pas que nm applique un quelconque tri (y compris celui par défaut qu’il utilise), utilisez l’option de ligne de commande -p. Pour inverser tout tri existant, utilisez l’option de ligne de commande -r.

Q9. Comment faire en sorte que nm n’affiche que les symboles indéfinis ?

Vous pouvez le faire en utilisant l’option de ligne de commande -u.

nm -u [fichier-obj]

Par exemple :

nm -u apl

Q10. Comment faire en sorte que nm n’affiche que les symboles définis ?

Pour faire en sorte que nm n’affiche que les symboles définis, utilisez l’option de ligne de commande –defined-only.

nm --defined-only [fichier-obj]

Par exemple :

nm --defined-only apl

Conclusion

Il est vrai que la commande nm a un public de niche, mais mon expérience personnelle dit que même si vous ne vous considérez pas comme faisant partie de ce public, gardez à l’esprit qu’un tel outil existe. Et pour ceux qui souhaitent utiliser cet utilitaire, une fois que vous avez terminé de pratiquer tous les exemples ici, rendez-vous sur la page de manuel de nm pour en savoir plus.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.