Linux Commands · 4 min read · Sep 14, 2025
Tutorial sul comando nm di Linux per principianti (10 esempi)

Se sei un utente Linux che si occupa anche di programmazione e sviluppo di software a livello di sistema, potresti trovarti in situazioni in cui hai bisogno di informazioni relative ai simboli in un file oggetto. Sarai felice di sapere che esiste un’utilità da riga di comando - chiamata nm - che puoi utilizzare in queste situazioni.
In questo tutorial, discuteremo le basi di questo strumento utilizzando alcuni esempi facili da comprendere. Ma prima di farlo, vale la pena menzionare che tutti gli esempi qui sono stati testati su una macchina Ubuntu 22.04 LTS.
Comando nm di Linux
L’utilità da riga di comando nm elenca fondamentalmente i simboli dai file oggetto. Ecco la sintassi dello strumento:
nm [OPZIONI] NOME-FILE-OGGETTOEcco come la pagina man del comando spiega:
GNU nm elenca i simboli dai file oggetto objfile.... Se non vengono elencati file oggetto come argomenti, nm presume il file a.out.Di seguito ci sono alcuni esempi in stile Q&A che ti daranno un’idea migliore di come funziona nm.
D1. Come funziona il comando nm?
L’uso base di questo comando è molto semplice: tutto ciò che devi fare è eseguire il comando ‘nm’ e passare il nome del file oggetto come input. Ad esempio, ho usato il comando nm con il file binario ‘apl’:
nm aplLo screenshot seguente mostra il tipo di output prodotto dal comando sopra:

Le tre colonne prodotte nell’output rappresentano rispettivamente il valore del simbolo, il tipo di simbolo e il nome del simbolo. Ci sono diversi tipi di simboli: per conoscere i dettagli completi, vai alla pagina man del comando nm.
D2. Come avere i nomi dei file che precedono ogni simbolo nell’output?
Puoi farlo utilizzando l’opzione da riga di comando -A.
nm -A [file-obj]Ad esempio:
nm -A apl
Quindi puoi vedere che il nome del file è stato aggiunto all’inizio di ogni riga.
D3. Come fare in modo che nm visualizzi anche i simboli del debugger?
Per fare in modo che nm visualizzi anche i simboli del debugger nell’output, usa l’opzione da riga di comando -a.
nm -a [nome-file-obj]Ad esempio:
nm -a aplIl comando sopra visualizzerà tutti i simboli, inclusi i simboli solo per il debugger che normalmente non vengono elencati.
D4. Come fare in modo che nm decodifichi i nomi dei simboli a basso livello?
Se vuoi, puoi anche forzare nm a decodificare i nomi dei simboli a basso livello in nomi a livello utente. Puoi farlo utilizzando l’opzione da riga di comando -C.
nm -C [file-obj]Ad esempio:
nm -C aplEcco cosa dice la pagina man riguardo a questa opzione:
Oltre a rimuovere eventuali underscore iniziali aggiunti dal sistema,
questo rende i nomi delle funzioni C++ leggibili. I diversi compilatori hanno
stili di mangling diversi. L'argomento opzionale dello stile di demangling
può essere utilizzato per scegliere uno stile di demangling appropriato per il tuo
compilatore.D5. Come fare in modo che nm visualizzi solo simboli dinamici?
Nel caso tu voglia che nm visualizzi solo simboli dinamici, piuttosto che i simboli normali, usa l’opzione da riga di comando -D.
nm -D [file-obj]Ad esempio:
nm -D apl
Quindi puoi vedere che nm ha prodotto solo simboli dinamici nell’output.
D6. Come utilizzare diversi formati di output di nm?
Per abilitare diversi formati di output, usa l’opzione da riga di comando -f. Per impostazione predefinita, l’output è prodotto nel formato bsd, tuttavia, se vuoi, puoi abilitare anche i formati ‘sysv’ e ‘posix’.
nm -f [formato] [nome-file-obj]Ad esempio:
nm -f posix apl
Osserva il cambiamento nel formato ora.
D7. Come fare in modo che nm visualizzi solo simboli esterni?
Puoi ottenere questo utilizzando l’opzione da riga di comando -g.
nm -g [file-obj]Ad esempio:
nm -g apl
D8. Quali opzioni di ordinamento fornisce nm?
Per impostazione predefinita, i simboli sono ordinati in ordine alfabetico. Tuttavia, se vuoi, puoi ordinarli numericamente in base ai loro indirizzi utilizzando l’opzione da riga di comando -n.
nm -n [fileobj]Ad esempio:
nm -n apl
Quindi puoi vedere che l’output è ora ordinato per indirizzi.
Nel caso tu non voglia che nm applichi alcun tipo di ordinamento (incluso quello predefinito che utilizza), usa l’opzione -p. Proseguendo, per invertire qualsiasi ordinamento esistente, usa l’opzione -r.
D9. Come fare in modo che nm visualizzi solo simboli non definiti?
Puoi farlo utilizzando l’opzione da riga di comando -u.
nm -u [file-obj]Ad esempio:
nm -u apl
D10. Come fare in modo che nm visualizzi solo simboli definiti?
Per fare in modo che nm visualizzi solo simboli definiti, usa l’opzione da riga di comando –defined-only.
nm --defined-only [file-obj]Ad esempio:
nm --defined-only apl
Conclusione
D’accordo, il comando nm ha un pubblico di nicchia, ma la mia esperienza personale dice che anche se non ti consideri parte di quel pubblico, tieni presente che esiste uno strumento del genere. E per coloro che vogliono utilizzare questa utilità, una volta terminata la pratica di tutti gli esempi qui, vai alla pagina man di nm per saperne di più.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.