nm 全称 Name List,读取二进制符号表(函数、全局变量)
nm 极简说明
全称 Name List,读取二进制符号表(函数、全局变量),支持 .o/.a/.so/ 可执行文件。
核心用途
- 查看文件包含哪些函数、变量
- 排查链接报错:
nm -u查未定义符号 nm -D查看 so 对外导出接口-C还原 C++ 编译后的乱码函数名
常见符号标识
- T:全局函数;U:外部未定义符号;D:全局初始化变量;B:未初始化全局变量
易混区分
nm(符号工具)≠ nmcli(NetworkManager 网络命令)
再给出命令实例和结果
nm 极简实例 + 输出示例
1. 基础查看目标文件符号 nm main.o
命令
bash
运行
nm main.o
示例输出
plaintext
0000000000000000 T main
U printf
T main:本文件定义的 main 函数U printf:依赖外部 printf,未定义
2. 只看未定义符号(排查链接报错)nm -u main.o
命令
bash
运行
nm -u main.o
输出
plaintext
printf
3. 查看动态库导出接口 nm -D libtest.so
命令
bash
运行
nm -D libtest.so
输出
plaintext
0000000000001122 T add
0000000000001144 T sub
4. C++ 解码乱码符号 -C
无 - C 原始输出
plaintext
0000000000001234 T _Z3sumii
带 - C 命令
nm -C appplaintext
0000000000001234 T sum(int, int)
5. 检索指定函数 grep 过滤
bash
运行
nm app | grep main
输出
plaintext
0000000000001040 T main
符号速记
- T:代码段全局函数
- U:外部未定义符号
- D:初始化全局变量
- B:未初始化全局变量 (.bss)

浙公网安备 33010602011771号