Blog

Plattformübergreifende Kompilierung von Go

Dennis Vriend

Aktualisiert Oktober 21, 2025
2 Minuten

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 und , die die automatisch erkannten Werte der Host-Architektur enthalten, als Zielplattform für die Kompilierung verwendet. Geben Sie 'go env' ein, um zu prüfen, wie die Zielarchitektur lautet.

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.


Tags:

Verfasst von

Dennis Vriend

Contact

Let’s discuss how we can support your journey.