Comando Linux · 4 min read · Sep 14, 2025
Tutorial del comando nm de Linux para principiantes (10 ejemplos)

Si eres un usuario de Linux que también está interesado en la codificación y el desarrollo de software a nivel de sistema, es posible que te encuentres en situaciones en las que necesites información relacionada con símbolos en un archivo objeto. Te alegrará saber que existe una utilidad de línea de comandos - denominada nm - que puedes usar en estas situaciones.
En este tutorial, discutiremos los conceptos básicos de esta herramienta utilizando algunos ejemplos fáciles de entender. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos aquí han sido probados en una máquina con Ubuntu 22.04 LTS.
Comando nm de Linux
La utilidad de línea de comandos nm lista básicamente los símbolos de los archivos objeto. Aquí está la sintaxis de la herramienta:
nm [OPTIONS] NOMBRE-DEL-ARCHIVO-OBJETOY a continuación se explica cómo lo describe la página del manual del comando:
GNU nm lista los símbolos de los archivos objeto objfile.... Si no se
listan archivos objeto como argumentos, nm asume el archivo a.out.A continuación se presentan algunos ejemplos en formato de preguntas y respuestas que te darán una mejor idea de cómo funciona nm.
P1. ¿Cómo funciona el comando nm?
El uso básico de este comando es muy sencillo: todo lo que tienes que hacer es ejecutar el comando ‘nm’ y pasar el nombre del archivo objeto como entrada. Por ejemplo, utilicé el comando nm con el archivo binario ‘apl’:
nm aplLa siguiente captura de pantalla muestra el tipo de salida que produjo el comando anterior:

Las tres columnas producidas en la salida representan el valor del símbolo, el tipo de símbolo y el nombre del símbolo, respectivamente. Hay varios tipos de símbolos; para conocer todos los detalles, dirígete a la página del manual del comando nm.
P2. ¿Cómo hacer que los nombres de archivo precedan a cada símbolo en la salida?
Esto puedes hacerlo utilizando la opción de línea de comandos -A.
nm -A [archivo-objeto]Por ejemplo:
nm -A apl
Así que puedes ver que el nombre del archivo se agregó al principio de cada línea.
P3. ¿Cómo hacer que nm muestre símbolos de depuración también?
Para hacer que nm muestre símbolos de depuración también en la salida, utiliza la opción de línea de comandos -a.
nm -a [nombre-del-archivo-objeto]Por ejemplo:
nm -a aplEl comando anterior mostrará todos los símbolos, incluidos los símbolos solo de depuración que normalmente no se listan.
P4. ¿Cómo hacer que nm decodifique nombres de símbolos de bajo nivel?
Si lo deseas, incluso puedes forzar a nm a decodificar nombres de símbolos de bajo nivel en nombres de nivel de usuario. Esto puedes hacerlo utilizando la opción de línea de comandos -C.
nm -C [archivo-objeto]Por ejemplo:
nm -C aplEsto es lo que dice la página del manual sobre esta opción:
Además de eliminar cualquier guion bajo inicial añadido por el sistema,
esto hace que los nombres de funciones de C++ sean legibles. Diferentes
compiladores tienen diferentes estilos de mangling. El argumento opcional
de estilo de demangling puede usarse para elegir un estilo de demangling
apropiado para tu compilador.P5. ¿Cómo hacer que nm muestre solo símbolos dinámicos?
En caso de que desees que nm muestre solo símbolos dinámicos, en lugar de los símbolos normales, utiliza la opción de línea de comandos -D.
nm -D [archivo-objeto]Por ejemplo:
nm -D apl
Así que puedes ver que nm solo produjo símbolos dinámicos en la salida.
P6. ¿Cómo usar diferentes formatos de salida de nm?
Para habilitar diferentes formatos de salida, utiliza la opción de línea de comandos -f. Por defecto, la salida se produce en el formato bsd; sin embargo, si lo deseas, también puedes habilitar los formatos ‘sysv’ y ‘posix’.
nm -f [formato] [nombre-del-archivo-objeto]Por ejemplo:
nm -f posix apl
Observa el cambio en el formato ahora.
P7. ¿Cómo hacer que nm muestre solo símbolos externos?
Esto puedes lograrlo utilizando la opción de línea de comandos -g.
nm -g [archivo-objeto]Por ejemplo:
nm -g apl
P8. ¿Qué opciones de ordenamiento proporciona nm?
Por defecto, los símbolos se ordenan alfabéticamente. Sin embargo, si lo deseas, puedes ordenarlos numéricamente por sus direcciones utilizando la opción de línea de comandos -n.
nm -n [archivo-objeto]Por ejemplo:
nm -n apl
Así que puedes ver que la salida ahora está ordenada por direcciones.
En caso de que no desees que nm aplique ningún tipo de ordenamiento (incluido el predeterminado que utiliza), utiliza la opción de línea de comandos -p. Pasando a la siguiente opción, para invertir cualquier orden existente, utiliza la opción de línea de comandos -r.
P9. ¿Cómo hacer que nm muestre solo símbolos indefinidos?
Esto puedes hacerlo utilizando la opción de línea de comandos -u.
nm -u [archivo-objeto]Por ejemplo:
nm -u apl
P10. ¿Cómo hacer que nm muestre solo símbolos definidos?
Para hacer que nm muestre solo símbolos definidos, utiliza la opción de línea de comandos –defined-only.
nm --defined-only [archivo-objeto]Por ejemplo:
nm --defined-only apl
Conclusión
Es cierto que el comando nm tiene una audiencia de nicho, pero mi experiencia personal dice que incluso si no te consideras parte de esa audiencia, ten en cuenta que existe una herramienta así. Y para aquellos que desean utilizar esta utilidad, una vez que terminen de practicar todos los ejemplos aquí, dirígete a la página del manual de nm para saber más.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.