nm在linux中列出目标文件的符号清单,常用来查看动态链接库中的函数
nm支持的选项如下
-a 按照man手册,仅列出调试信息,实际上却是调试信息+正常信息
-A 增加一列显示目标文件,没有实际意义
-C 将低级符号信息编码成便于查看的用户信息,最终效果是符号清单呈现出class::memberfunction形式的信息,最常用的选项
-D 显示动态符号,以目标文件为so为例,显示了so中增加的符号信息以及so引用的so的符号信息
-f 指定不同的输出格式,改变命令输出格式
-g 仅显示外部符号,实测和-D选项输出几乎一样
-l 显示符号的行号,附加一列显示符号在xx文件的xx行定义 较常用
-n 将符号按照地址进行排序
-p 不排序符号,使用该选项后的输出没有按照地址也没有按照符号名称排序
-r 逆序输出符号
-u 仅显示未定义符号,实测列出了GLIBC中的memset、memcpy等,不清楚具体作用
-h 显示帮助
-V 版本信息
root@master:/home/linxx/SD/02.main_control# nm monitor_zebra_crossing_red_light.o | grep RsiAsnDsmpLtev
nm: 'monitor_zebra_crossing_red_light.o': No such file
root@master:/home/linxx/SD/02.main_control# nm ./monitor/monitor_zebra_crossing_red_light.o | grep RsiAsnDsmpLtev
nm: './monitor/monitor_zebra_crossing_red_light.o': No such file
root@master:/home/linxx/SD/02.main_control# nm ./obj/monitor_zebra_crossing_red_light.o | grep RsiAsnDsmpLtev
U _Z14RsiAsnDsmpLtevP10MessageSet 其中的 U ----------》表示这个库未定义
root@master:/home/linxx/SD/02.main_control# nm /;
Display all 3530 possibilities? (y or n)
root@master:/home/linxx/SD/02.main_control# nm /;
nm: Warning: '/' is a directory
root@master:/home/linxx/SD/02.main_control# nm ./Lib/libsutpcv2x_message.so | grep RsiAsnDsmpLtev
000000000001bcc0 T RsiAsnDsmpLtev 其中的 T---------》表示已定义
root@master:/home/linxx/SD/02.main_control#