2016-04-20 9 views
0

Ich entwickle derzeit einen Dienst, der als Windows-Dienst erstellt werden kann oder als ausführbare OSX/Linux-Datei ausgeführt werden kann.Einstellung GOOS mit go run

I-Tags auf Windows-Dateien bauen bin mit, einschließlich der mit einem Hauptverfahren

// +build windows 

Und auf der anderen Datei

// +build !windows 

eine main-Methode enthält Wenn ich ausführen go run *.go auf die Mac-Seite, bekomme ich den folgenden Fehler

mainDOS.go:10:2: no buildable Go source files in /Users/michaelbrandenburg/Documents/git-repo/goCode/src/golang.org/x/sys/windows/svc 
windowsService.go:15:2: no buildable Go source files in /Users/michaelbrandenburg/Documents/git-repo/goCode/src/golang.org/x/sys/windows/svc/debug 
install.go:14:2: no buildable Go source files in /Users/michaelbrandenburg/Documents/git-repo/goCode/src/golang.org/x/sys/windows/svc/eventlog 
install.go:15:2: no buildable Go source files in /Users/michaelbrandenburg/Documents/git-repo/goCode/src/golang.org/x/sys/windows/svc/mgr 

Gibt es eine Möglichkeit,zu laufenund zielen Sie auf die Architektur, die ich ausführen möchte? Ich kann die ausführbaren Dateien ohne Probleme erstellen.

+3

Es macht keinen Sinn, GOOS mit 'go run' zu setzen, denn' go run' soll sofort auf dem Host-Betriebssystem ausgeführt werden. – JimB

+0

Oder sind Sie verwirrt über "Build Constraints"? 'go run' folgt keinen Build-Einschränkungen, da Sie die zu erstellenden Dateien bereits explizit als Argumente auflisten. Sie sollten 'go run' nicht für mehr als einfache Tests verwenden, und Sie haben' go install' und 'go build', um mit kompletten Paketen zu arbeiten. – JimB

Antwort

1

GOOS=darwin go run *.go wird das env für Mac OSX eingestellt. Obwohl, wie JimB sagte, gibt es nicht viel Sinn. Doing GOOS=darwin go build *.go ist ein guter Weg, um zu kompilieren, obwohl

+0

Verwenden Sie dies zum Erstellen eines Docker-Bilds und es funktioniert großartig. Ich bekam: exec user process verursachte "exec format error" beim Versuch, mein gebautes Docker-Image auszuführen. Die Umgebungen stimmten nicht überein, daher schien dies für den Aufbau der Golang-Binärdatei für eine Linux-Umgebung zu funktionieren. Vielen Dank – bi4nchi