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-OBJETO

E 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 apl

A 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 apl

O 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 apl

Aqui 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.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.