1

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

4

1 回答 1

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
于 2012-12-04T15:29:16.757 回答