Linux Commands · 4 min read · Sep 14, 2025
Tutorial do Comando nm do Linux para Iniciantes (10 Exemplos)

Se você é um usuário do Linux que também está interessado em codificação e desenvolvimento de software em nível de sistema, pode se encontrar em situações em que precisa de informações relacionadas a símbolos em um arquivo objeto. Você ficará feliz em saber que existe uma utilidade de linha de comando - chamada nm - que você pode usar nessas situações.
Neste tutorial, discutiremos os conceitos básicos desta ferramenta usando alguns exemplos fáceis de entender. Mas antes de fazermos isso, vale a pena mencionar que todos os exemplos aqui foram testados em uma máquina Ubuntu 22.04 LTS.
Comando nm do Linux
A utilidade de linha de comando nm basicamente lista símbolos de arquivos objeto. Aqui está a sintaxe da ferramenta:
nm [OPTIONS] NOME-DO-ARQUIVO-OBJETOE a seguir está como a página do manual do comando explica:
GNU nm lista os símbolos de arquivos objeto objfile.... Se nenhum arquivo objeto
for listado como argumento, nm assume o arquivo a.out.A seguir estão alguns exemplos no estilo Q&A que lhe darão uma ideia melhor de como o nm funciona.
Q1. Como o comando nm funciona?
O uso básico deste comando é muito simples - tudo o que você precisa fazer é executar o comando ‘nm’ e passar o nome do arquivo objeto como entrada para ele. Por exemplo, eu usei o comando nm com o arquivo binário ‘apl’:
nm aplA captura de tela a seguir mostra o tipo de saída que o comando acima produziu:

As três colunas produzidas na saída representam o valor do símbolo, o tipo do símbolo e o nome do símbolo, respectivamente. Existem vários tipos de símbolos - para saber os detalhes completos, acesse a página do manual do comando nm.
Q2. Como ter nomes de arquivos precedendo cada símbolo na saída?
Isso você pode fazer usando a opção de linha de comando -A.
nm -A [arquivo-objeto]Por exemplo:
nm -A apl
Assim, você pode ver que o nome do arquivo foi adicionado no início de cada linha.
Q3. Como fazer o nm exibir símbolos de depuração também?
Para fazer o nm exibir símbolos de depuração também na saída, use a opção de linha de comando -a.
nm -a [nome-do-arquivo-objeto]Por exemplo:
nm -a aplO comando acima exibirá todos os símbolos, incluindo símbolos apenas de depuração que normalmente não são listados.
Q4. Como fazer o nm decodificar nomes de símbolos de baixo nível?
Se você quiser, pode até forçar o nm a decodificar nomes de símbolos de baixo nível em nomes de nível de usuário. Isso você pode fazer usando a opção de linha de comando -C.
nm -C [arquivo-objeto]Por exemplo:
nm -C aplAqui está o que a página do manual tem a dizer sobre esta opção:
Além de remover qualquer sublinhado inicial adicionado pelo sistema,
isso torna os nomes das funções C++ legíveis. Diferentes compiladores têm
estilos de mangling diferentes. O argumento opcional de estilo de demangling
pode ser usado para escolher um estilo de demangling apropriado para seu
compilador.Q5. Como fazer o nm exibir apenas símbolos dinâmicos?
Caso você queira que o nm exiba apenas símbolos dinâmicos, em vez dos símbolos normais, use a opção de linha de comando -D.
nm -D [arquivo-objeto]Por exemplo:
nm -D apl
Assim, você pode ver que o nm produziu apenas símbolos dinâmicos na saída.
Q6. Como usar diferentes formatos de saída do nm?
Para habilitar diferentes formatos de saída, use a opção de linha de comando -f. Por padrão, a saída é produzida no formato bsd, no entanto, se você quiser, pode habilitar os formatos ‘sysv’ e ‘posix’ também.
nm -f [formato] [nome-do-arquivo-objeto]Por exemplo:
nm -f posix apl
Observe a mudança no formato agora.
Q7. Como fazer o nm exibir apenas símbolos externos?
Isso você pode conseguir usando a opção -g.
nm -g [arquivo-objeto]Por exemplo:
nm -g apl
Q8. Quais opções de ordenação o nm fornece?
Por padrão, os símbolos são ordenados alfabeticamente. No entanto, se você quiser, pode ordená-los numericamente por seus endereços usando a opção de linha de comando -n.
nm -n [arquivo-objeto]Por exemplo:
nm -n apl
Assim, você pode ver que a saída agora está ordenada por endereços.
Caso você não queira que o nm aplique qualquer tipo de ordenação (incluindo a padrão que usa), use a opção -p. Seguindo em frente, para reverter qualquer ordenação existente, use a opção -r.
Q9. Como fazer o nm exibir apenas símbolos indefinidos?
Isso você pode fazer usando a opção de linha de comando -u.
nm -u [arquivo-objeto]Por exemplo:
nm -u apl
Q10. Como fazer o nm exibir apenas símbolos definidos?
Para fazer o nm exibir apenas símbolos definidos, use a opção de linha de comando –defined-only.
nm --defined-only [arquivo-objeto]Por exemplo:
nm --defined-only apl
Conclusão
Concordo, o comando nm tem um público nichado, mas minha experiência pessoal diz que mesmo que você não se considere parte desse público, tenha em mente que tal ferramenta existe. E para aqueles que desejam usar esta utilidade, uma vez que terminarem de praticar todos os exemplos aqui, acessem a página do manual do nm para saber mais.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.