如果二进制文件的其余部分始终完全相同,那么您可以在中找到时间戳 .a 文件并用固定值覆盖它(如全零)。
.a
使用dd将允许您覆盖所需文件的一部分:
dd if=libfoo.a1 of=libfoo.a skip=30 seek=30 count=4 bs=1 conv=notrunc
当然这意味着你需要你的时间戳在其他地方(你可以有一个非常基本的c程序,它需要当前时间并以小端或大端输出,然后用dd你可以覆盖库文件)。使用dd,我可以覆盖.a文件并获得没有差异的结果
默认答案是“它不能由ar工具完成”
在ar中使用“确定性模式”。有关手册中的ar,请参阅选项“D”。
me@mybox:~$ rm libfoo.a; touch foo.o; ar rcsD libfoo.a foo.o; md5sum libfoo.a 3ecae045133ff919d1e42f6050ef56be libfoo.a me@mybox:~$ rm libfoo.a; touch foo.o; ar rcsD libfoo.a foo.o; md5sum libfoo.a 3ecae045133ff919d1e42f6050ef56be libfoo.a
如果你使用 ranlib 之后,确保你正在使用 ranlib -D ;除此以外 ranlib 将把时间戳放回去。
ranlib
ranlib -D