二进制差异
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结果不一致问题,搞不定不要打我。