与Windows(每个.obj文件的文件头中都有一个编译时间戳)不同,UNIX对象文件(尤其是ELF文件)不编码任何类型的时间戳。
但是,如果您的源使用__TIME__和__DATE__宏,则编译产生的目标文件将明显改变。此外,如果您要构建-g二进制文件,则包括编译时间戳在内的所有信息都可以记录为调试信息的一部分。
最后,您使用的链接器可能会记录链接时间戳(作为供应商扩展)。
您的首要任务应该是了解一种构建与另一种构建之间的差异来自何处。
如果来自__DATE__和__TIME__,则从您的来源中消除它们。
如果来自调试信息,请在将二进制文件传递给后比较它们strip -g。
如果来自供应商链接程序扩展,请查看是否存在禁用此类时间戳的标志。如果没有一个,你必须写一个工具,比较只有你感兴趣的部分。例如,你可以使用readelf -x.text a.out等比较只有.text部分(你还需要进行比较.data,.rodata和许多可能其他)。