Warum führt die Ausführung von go build ./
bei einigen Projekten jedes Mal zu unterschiedlichen Ergebnissen?Warum ändert sich meine Go-Binärdatei bei jedem Neuaufbau?
Zum Beispiel:
$ cd go/src/github.com/google/cadvisor
$ go build ./
$ sh1sum cadvisor
cdfc3c38898e2decd5df35b661737f7cc4f514ed cadvisor
$ go build ./
$ sha1sum cadvisor
a94db96d684225e7a45cc68c5341fe6f57897c23 cadvisor
Voll isoliert Setup:
$ go version
go version go1.6.2 linux/amd64
$ export GOPATH=$(mktemp -d)
$ cd $GOPATH
$ go get github.com/tools/godep
$ go get github.com/google/cadvisor
package github.com/influxdb/influxdb/client: code in directory /tmp/tmp.2MxFdNmdDe/src/github.com/influxdb/influxdb/client expects import "github.com/influxdata/influxdb/client"
$ cd src/github.com/google/cadvisor
$ $GOPATH/bin/godep restore
godep: WARNING: Go version (go1.6) & $GO15VENDOREXPERIMENT= wants to enable the vendor experiment, but disabling because a Godep workspace (Godeps/_workspace) exists
$ go build ./
...
Nie verwendet Go, aber ich vermute, dass das Verhalten absichtlich ist. Ich habe bereits an einem Ort gearbeitet, an dem wir jedes Mal, wenn wir eine kompilierte Win32-MFC-Anwendung erhalten, die Binärdatei absichtlich anders gemacht haben. Der Grund war, uns von der Verantwortung und Haftung freizustellen, wenn der Kunde den Quellcode anfragte, im möglichen Fall, dass er berührt wurde. Normalerweise würde es nicht passieren, da der Hauptgrund des Kunden die Quelle nicht beibehalten wollte, sondern im Falle unseres Konkurses die Softwarehersteller – sergiol
Wenn es absichtlich Variationen zu den Builds gab, würde ich es erwarten sich immer ändern. Das ist jedoch nicht der Fall, da ein kleines "Hallo Welt" -Stil-Programm bei der Neukompilierung identische Binärdateien erzeugt. –