In früheren Blogs haben wir uns mit der Programmiersprache Go beschäftigt und damit, wie man Go in AWS Lambda ausführt. In diesem Blog lernen wir, wie man Go-Code kompiliert, so dass er unter Linux, Mac und Windows ausgeführt werden kann.
GOOS und GOARCH
Die Umgebungsvariablen GOOS und GOARCH konfigurieren die Zielplattform, für die Go kompiliert werden soll. Standardmäßig werden die Variablen
Mac:
$ go env
...
GOARCH="amd64"
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
...
Docker golang:stretch:
root@ccd8f40b9eb7:/go# go env
...
GOARCH="amd64"
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
...
Ziel-Architektur
Go unterstützt eine Reihe von Plattformen, aber die wichtigsten sind Linux, Mac und Windows.
Kompilieren für eine Plattform
Um für eine bestimmte Plattform zu kompilieren, müssen Sie die Umgebungsvariablen GOOS und GOARCH setzen. Nachstehend finden Sie eine Tabelle mit den verfügbaren Werten. Go unterstützt mehr Betriebssysteme und CPU-Architekturen als die unten aufgeführten, aber normalerweise werden Sie diese Einstellungen am häufigsten verwenden.
| Plattform | GOOS | GOARCH |
| - | - | - |
| Mac | darwin | amd64 |
| Linux | linux | amd64 |
| Windows | windows | amd64 |
Cross Compilation
Lassen Sie uns ein einfaches 'helloworld.go'-Beispiel erstellen und es für Linux, Mac und Windows crosskompilieren.
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
Um es zu kompilieren, geben Sie ein:
$ GOOS=darwin GOARCH=amd64 go build -o helloworld-mac helloworld.go
$ file helloworld-mac
helloworld: Mach-O 64-bit executable x86_64
$ GOOS=linux GOARCH=amd64 go build -o helloworld-linux helloworld.go
$ file helloworld-linux
helloworld-linux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
$ GOOS=windows GOARCH=amd64 go build -o helloworld-windows.exe helloworld.go
$ file helloworld-windows.exe
helloworld-windows.exe: PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows
Ausführen der Artefakte
Um die Artefakte auszuführen, geben Sie ein:
$ ./helloworld-mac
Hello World!
$ docker run -it -v ~/go:/go ubuntu /bin/bash
root@5ae3f3f473d7:/# /go/helloworld-linux
Hello World!
Fazit
In Go geschriebene Programme können leicht für andere Plattformen wie Linux, Mac und Windows kompiliert werden, indem Sie die Umgebungsvariablen GOOS und GOARCH setzen. Der Befehl 'go build' kompiliert eine Binärdatei, die auf der konfigurierten Plattform läuft. Unter Linux und Mac können Sie die Binärplattform mit dem Befehl 'file' überprüfen, der den Dateityp und die Plattformarchitektur anzeigt, auf der die Datei ausgeführt werden kann.
Verfasst von
Dennis Vriend
Unsere Ideen
Weitere Blogs
Contact




