我有以下C程序:
#include<stdio.h>
int main()
{
printf("hhhh");
return 0;
}
编译,复制和比较的命令:
$ gcc print.c -o a.out
$ objcopy a.out b.out
$ cmp a.out b.out
我编译了这个程序并创建了一个可执行文件。然后,我使用objcopy
命令制作可执行文件的副本。但是,当我比较这些文件时,我得到了这个:
文件不同:字节41,第1行
我怎么知道缺少哪些内容?
任何帮助或指示将不胜感激。谢谢!
答案 0 :(得分:0)
我如何知道缺少哪些内容?
是什么让您相信任何内容 缺失?
objcopy
的工作方式是:
objdump
无处保证在给出“复制整个文件”时,结果将是相同的。
特别是,不可加载的部分可以通过其他方式重新排序或更改。
区别是.init_array节的EntSize在a.out文件中是0字节,在b.out中是8字节
0的EntSize
对于非空部分没有意义。如果您的a.out
中确实有这样的部分,则链接器可能存在错误。