我有2个目标文件应该是相似的,因为它们来自同一代码库的2个不同的编译时间。我想比较他们的nm输出。但是我不能因为有很多名字错误。由于名称错误结果似乎不同,但实际上并非如此。我尝试了以下步骤来帮助我进行比较
1) took last word using command
sed '/ /s/.* //' nmfile1 >nmfile1_lastword
2) removed _Z.. starting word with nothing
sed 's/^_Z...//' nmfile1_lastword > nmfile1_lastword_removed_z
3) sorted the same
sort nmfile1_lastword_removed_z > nmfile1_lastword_removed_z_sorted
我也为第二个nmFile2做了以上操作。
然而,在开始时仍然有很多名称错误,我无法删除,这让我觉得没有比较nm输出的简单方法。请注意,我只关心起始名称,因为我可以在gvim -d中看到结果,我可以手动识别差异。如果有一些直接工具,那将是最好的。
请注意,我尝试使用带有选项-C的nm来向我显示没有名称Mangling但它仍然显示了很多名称。
答案 0 :(得分:1)
使用c ++ filt将符号解析为
nm xxx.so | c++filt > compare1.txt
nm xxx.so | c++filt > compare2.txt