标签:highlight 任务 grep 间接 一般来说 特定 初始 报告 oba
nm是name的缩写,它显示指定文件中的符号信息,文件可以是对象文件、可执行文件或对象文件库。如果文件中没有包含符号信息,nm报告该情况,单不把他解释为出错。nm缺省情况下报告十进制符号表示法下的数字值。
对于每一个符号来说,其类型如果是小写的,则表明该符号是local的。大写则表明该符号是global(external)的
有时会碰到一个编译了但没有链接的代码,那是因为它缺失了标识符;这种情况,可以用nm和objdump、readelf命令来查看程序的符号表;所有这些命令做的工作基本一样;
比如连接器报错有未定义的标识符;大多数情况下,会发生在库的缺失或企图链接一个错误版本的库的时候;浏览目标代码来寻找一个特殊标识符的引用:
nm -uCA *.o | grep foo
-u选项限制了每个目标文件中未定义标识符的输出。-A选项用于显示每个标识符的文件名信息;对于C++代码,常用的还有-C选项,它也为解码这些标识符;
objdump、readld命令可以完成同样的任务。等效命令为: $objdump -t $readelf -s
nm add.o --defined-only -g
标签:highlight 任务 grep 间接 一般来说 特定 初始 报告 oba
原文地址:https://www.cnblogs.com/zuofaqi/p/12026482.html