验证nm报告中符号更改的简便方法

时间:2012-12-04 15:20:29

标签: c gcc binary symbols nm

我正在使用Suse gcc编译器编译我的库(C编程),然后我生成该库的nm报告。我必须将该nm报告与以前的版本库进行比较,以检查当前版本库中存在的符号是什么。

nm libxxx0.1.a > nm_0.1.txt
nm libxxx0.2.a > nm_0.2.txt

现在我只是将nm_0.1.txtnm_0.2.txt文件与一些文本比较工具进行比较。除了这个符号差异,我也得到了抵消差异。我不担心偏移差异。

是否有任何命令(在windows或suse中)可以轻松突出显示nm报告中的符号差异。

注意:生成的nm报告会非常大。手动打开该文本文件并使用某些工具删除该nm报告的第一列对于该大型nm文件来说并不是一件容易的事。

1 个答案:

答案 0 :(得分:3)

这适用于Linux。您必须首先准备和排序nm输出

nm -g libxxx0.1.a | awk '{print $3}' | sort -u >nm_0.1.txt
nm -g libxxx0.2.a | awk '{print $3}' | sort -u >nm_0.2.txt

如果您对所有符号感兴趣,请忽略-g并使用cut代替awk

nm libxxx0.1.a | cut -c20- | sort -u >nm_0.1.txt
nm libxxx0.2.a | cut -c20- | sort -u >nm_0.2.txt

然后,您可以显示与diff

的差异
diff -U0 nm_0.1.txt nm_0.2.txt

comm

comm -3 nm_0.1.txt nm_0.2.txt