我正在使用Suse gcc
编译器编译我的库(C编程),然后我生成该库的nm
报告。我必须将该nm报告与以前的版本库进行比较,以检查当前版本库中存在的符号是什么。
nm libxxx0.1.a > nm_0.1.txt
nm libxxx0.2.a > nm_0.2.txt
现在我只是将nm_0.1.txt
和nm_0.2.txt
文件与一些文本比较工具进行比较。除了这个符号差异,我也得到了抵消差异。我不担心偏移差异。
是否有任何命令(在windows或suse中)可以轻松突出显示nm报告中的符号差异。
注意:生成的nm报告会非常大。手动打开该文本文件并使用某些工具删除该nm报告的第一列对于该大型nm文件来说并不是一件容易的事。
答案 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