为什么重复 Go Windows 构建会导致不同的校验和?

当我在 Mac 上使用 Go 构建某些东西时,二进制文件对于重复构建具有一致的 md5sum。但是,当我为 Windows 交叉编译或在 Windows 上本地构建时,我每次都会得到不同的校验和。


发生了什么导致这种情况?


[kbrandt@glade: ~/] GOOS=windows go build

[kbrandt@glade: ~/] md5 -r tcollector.exe

f66dbec001eb0e02da261b4bc70d8072 tcollector.exe

[kbrandt@glade: ~/] GOOS=windows go build

[kbrandt@glade: ~/] md5 -r tcollector.exe

630e89fa4907b6811a3d19c99dbac2dc tcollector.exe

[kbrandt@glade: ~/] go build             

[kbrandt@glade: ~/] md5 -r tcollector    

0353160b4b000c7ba9d5331a72265291 tcollector

[kbrandt@glade: ~/] go build         

[kbrandt@glade: ~/] md5 -r tcollector

0353160b4b000c7ba9d5331a72265291 tcollector


慕桂英3389331
浏览 185回答 2
2回答

FFIVE

Windows 输出中的某些内容取决于随机性或时间。我不知道更多(比如它在使用什么改变)但没关系编译器(即使是同一编译器的不同版本)生成的输出会有所不同,并且散列的设计使相似的事物不会产生相似的输出。校验和就是这样,您可以使用它来检查您是否拥有文件并且它是正确的。有点空答案,但您所看到的情况没有技术问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go