Go build构建的二进制不一致问题

2020-01-15  本文已影响0人  莫问君心

二进制差异

go build经常会出现两次对相同源码构建后,其二进制结果不一致问题

Go程序的构建过程分为编译和链接两部分,编译过程中会因源码特征导致buildid不同,而链接过程中用于链接的临时目录名被写入ELF文件中会导致最后更新buildid时再次引入差异。

解决办法:

设置-buildid-tmpdir编译选项

mkdir -p ./tmp
go build -ldflags "-buildid=IdNetCheck -tmpdir=./tmp" -o./bin/xxx main.go

说明:
该方法只能解决部分情况下go build结果不一致问题,搞不定不要打我。

上一篇下一篇

猜你喜欢

热点阅读