我正在使用Susegcc编译器编译我的库(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文件来说不是一项容易的任务。

最佳答案

这是Linux版的。你必须先准备和整理你的纳米输出

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

关于c - 验证nm报告中符号更改的简便方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13706127/

10-12 16:05