Erstellen und Installieren von Go-Programmen

Einführung

Bisher haben Sie in unserenHow To Code in Go series den Befehlgo run verwendet, um Ihren Quellcode automatisch zu kompilieren und die resultierende ausführbare Datei auszuführen. Obwohl dieser Befehl zum Testen Ihres Codes in der Befehlszeile nützlich ist, müssen Sie zum Verteilen oder Bereitstellen Ihrer Anwendung Ihren Code in ein gemeinsam nutzbaresbinary executable oder eine einzelne Datei mit Maschinenbytecode erstellen, mit der Ihre Anwendung ausgeführt werden kann. Zu diesem Zweck können Sie die Go-Toolchain fürbuild undinstall Ihres Programms verwenden.

In Go heißt der Prozess der Übersetzung des Quellcodes in eine ausführbare Binärdateibuilding. Sobald diese ausführbare Datei erstellt wurde, enthält sie nicht nur Ihre Anwendung, sondern auch den gesamten Support-Code, der zum Ausführen der Binärdatei auf der Zielplattform erforderlich ist. Dies bedeutet, dass eine Go-Binärdatei keine Systemabhängigkeiten wie Go-Tools benötigt, um auf einem neuen System ausgeführt zu werden, im Gegensatz zu anderen Sprachen wieRuby,Python oderNode.js. Wenn Sie diese ausführbaren Dateien in einem ausführbaren Dateipfad auf Ihrem eigenen System ablegen, können Sie das Programm von überall auf Ihrem System ausführen. Dies nennt maninstalling das Programm auf Ihrem System.

In diesem Lernprogramm verwenden Sie die Go-Toolchain, um ein BeispielprogrammHello, World!auszuführen, zu erstellen und zu installieren, mit dem Sie zukünftige Anwendungen effektiv verwenden, verteilen und bereitstellen können.

Voraussetzungen

Um dem Beispiel in diesem Artikel zu folgen, benötigen Sie:

Einrichten und Ausführen der Go Binary

Erstellen Sie zunächst eine Anwendung, die als Beispiel für die Demonstration der Go-Toolchain dient. Dazu verwenden Sie den Klassiker „Hallo Welt!“ Programm aus demHow To Write Your First Program in Go Tutorial.

Erstellen Sie ein Verzeichnis mit dem Namengreeter in Ihremsrc-Verzeichnis:

mkdir greeter

Wechseln Sie als Nächstes in das neu erstellte Verzeichnis und erstellen Sie die Dateimain.goim Texteditor Ihrer Wahl:

cd greeter
nano main.go

Fügen Sie nach dem Öffnen der Datei den folgenden Inhalt hinzu:

src/greeter/main.go

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

Beim Ausführen druckt dieses Programm die PhraseHello, World! auf die Konsole, und das Programm wird erfolgreich beendet.

Speichern und schließen Sie die Datei.

Verwenden Sie zum Testen des Programms den Befehlgo run, wie Sie es in früheren Tutorials getan haben:

go run main.go

Sie erhalten folgende Ausgabe:

OutputHello, World!

Wie bereits erwähnt, hat der Befehlgo runIhre Quelldatei in eine ausführbare Binärdatei erstellt und anschließend das kompilierte Programm ausgeführt. In diesem Lernprogramm wird jedoch versucht, die Binärdatei so zu erstellen, dass Sie sie nach Belieben freigeben und verteilen können. Dazu verwenden Sie im nächsten Schritt den Befehlgo build.

Erstellen von Go-Binärdateien mitgo build

Mitgo build können Sie eine ausführbare Binärdatei für unsere Go-Beispielanwendung generieren, mit der Sie das Programm an der gewünschten Stelle verteilen und bereitstellen können.

Versuchen Sie dies mitmain.go. Führen Sie in Ihrem Verzeichnisgreeterden folgenden Befehl aus:

go build

Wenn Sie für diesen Befehl kein Argument angeben, kompiliertgo build automatisch das Programmmain.go in Ihrem aktuellen Verzeichnis. Der Befehl enthält alle*.go-Dateien im Verzeichnis. Außerdem wird der gesamte unterstützende Code erstellt, der erforderlich ist, um die Binärdatei auf jedem Computer mit derselben Systemarchitektur ausführen zu können, unabhängig davon, ob dieses System über die Quelldateien von.gooder sogar eine Go-Installation verfügt.

In diesem Fall haben Sie die Anwendunggreeterin eine ausführbare Datei integriert, die Ihrem aktuellen Verzeichnis hinzugefügt wurde. Überprüfen Sie dies, indem Sie den Befehlls ausführen:

ls

Unter MacOS oder Linux finden Sie eine neue ausführbare Datei, die nach dem Verzeichnis benannt ist, in dem Sie Ihr Programm erstellt haben:

Outputgreeter  main.go

[.note] #Note: Unter Windows lautet Ihre ausführbare Dateigreeter.exe.
#

Standardmäßig generiertgo build eine ausführbare Datei für die aktuellenplatform and architecture. Wenn die ausführbare Datei beispielsweise auf einemlinux/386-System erstellt wird, ist sie mit jedem anderenlinux/386-System kompatibel, auch wenn Go nicht installiert ist. Go unterstützt das Erstellen für andere Plattformen und Architekturen, über die Sie in unserem ArtikelBuilding Go Applications for Different Operating Systems and Architecturesmehr erfahren können.

Nachdem Sie Ihre ausführbare Datei erstellt haben, führen Sie sie aus, um sicherzustellen, dass die Binärdatei korrekt erstellt wurde. Führen Sie unter macOS oder Linux den folgenden Befehl aus:

./greeter

Führen Sie unter Windows Folgendes aus:

greeter.exe

Die Ausgabe der Binärdatei stimmt mit der Ausgabe von überein, als Sie das Programm mitgo run ausgeführt haben:

OutputHello, World!

Jetzt haben Sie eine einzelne ausführbare Binärdatei erstellt, die nicht nur Ihr Programm, sondern auch den gesamten Systemcode enthält, der zum Ausführen dieser Binärdatei erforderlich ist. Sie können dieses Programm jetzt auf neue Systeme verteilen oder auf einem Server bereitstellen, da Sie wissen, dass auf der Datei immer dasselbe Programm ausgeführt wird.

Im nächsten Abschnitt wird in diesem Lernprogramm erläutert, wie eine Binärdatei benannt wird und wie Sie sie ändern können, damit Sie den Erstellungsprozess Ihres Programms besser steuern können.

Ändern des Binärnamens

Nachdem Sie nun wissen, wie eine ausführbare Datei generiert wird, müssen Sie im nächsten Schritt ermitteln, wie Go einen Namen für die Binärdatei auswählt, und diesen Namen für Ihr Projekt anpassen.

Wenn Siego build ausführen, entscheidet Go standardmäßig automatisch über den Namen der generierten ausführbaren Datei. Dies geschieht auf zwei Arten: Wenn SieGo Modules verwenden, verwendet Go den letzten Teil des Modulnamens. Andernfalls verwendet Go den Namen des aktuellen Verzeichnisses. Dies ist die Methode, die im letzten Abschnitt verwendet wurde, als Sie das Verzeichnisgreeter erstellt, in dieses Verzeichnis geändert und danngo build ausgeführt haben.

Schauen wir uns die Modulmethode genauer an. Wenn Sie einego.mod-Datei in Ihrem Projekt mit einermodule-Deklaration wie der folgenden hatten:

go.mod

module github.com/sammy/shark

Dann wäre der Standardname für die generierte ausführbare Dateishark.

In komplexeren Programmen, die bestimmte Namenskonventionen erfordern, sind diese Standardwerte nicht immer die beste Wahl für die Benennung Ihrer Binärdatei. In diesen Fällen ist es am besten, Ihre Ausgabe mit dem Flag-o anzupassen.

Um dies zu testen, ändern Sie den Namen der ausführbaren Datei, die Sie im letzten Abschnitt erstellt haben, inhello und legen Sie sie in einem Unterordner namensbin ab. Sie müssen diesen Ordner nicht erstellen. Go erledigt das während des Build-Vorgangs von alleine.

Führen Sie den folgenden Befehlgo build mit dem Flag-o aus:

go build -o bin/hello

Mit dem Flag-o passt Go die Ausgabe des Befehls an das von Ihnen gewählte Argument an. In diesem Fall ist das Ergebnis eine neue ausführbare Datei mit dem Namenhello in einem Unterordner mit dem Namenbin.

Um die neue ausführbare Datei zu testen, wechseln Sie in das neue Verzeichnis und führen Sie die Binärdatei aus:

cd bin
./hello

Sie erhalten folgende Ausgabe:

OutputHello, World!

Sie können jetzt den Namen Ihrer ausführbaren Datei an die Anforderungen Ihres Projekts anpassen und unsere Umfrage zum Erstellen von Binärdateien in Go abschließen. Mitgo build können Sie Ihre Binärdatei jedoch weiterhin aus dem aktuellen Verzeichnis ausführen. Um neu erstellte ausführbare Dateien von überall auf Ihrem System zu verwenden, können Sie sie mitgo install installieren.

Installieren von Go-Programmen mitgo install

Bisher haben wir in diesem Artikel erläutert, wie ausführbare Binärdateien aus den Quelldateien von.gogeneriert werden. Diese ausführbaren Dateien sind hilfreich beim Verteilen, Bereitstellen und Testen, können jedoch noch nicht von außerhalb der Quellverzeichnisse ausgeführt werden. Dies wäre ein Problem, wenn Sie Ihr Programm aktiv nutzen möchten, z. B. wenn Sie ein Befehlszeilentool entwickelt haben, das Ihren Workflow auf Ihrem eigenen System unterstützt. Um die Verwendung der Programme zu vereinfachen, können Sie sie auf Ihrem System installieren und von überall aus darauf zugreifen.

Um zu verstehen, was damit gemeint ist, verwenden Sie den Befehlgo install, um Ihre Beispielanwendung zu installieren.

Der Befehlgo installverhält sich fast identisch mitgo build, aber anstatt die ausführbare Datei im aktuellen Verzeichnis oder einem durch das Flag-o angegebenen Verzeichnis zu belassen, wird die ausführbare Datei in$GOPATH/binabgelegt ) s Verzeichnis.

Führen Sie den folgenden Befehl aus, um herauszufinden, wo sich das Verzeichnis$GOPATHbefindet:

go env GOPATH

Die Ausgabe, die Sie erhalten, variiert, aber die Standardeinstellung ist das Verzeichnisgoin Ihrem Verzeichnis$HOME:

Output$HOME/go

Dago install generierte ausführbare Dateien in ein Unterverzeichnis von$GOPATH mit dem Namenbin legt, muss dieses Verzeichnis der Umgebungsvariablen$PATHhinzugefügt werden. Dies wird im SchrittCreating Your Go Workspace des vorausgesetzten ArtikelsHow To Install Go and Set Up a Local Programming Environment behandelt.

Wechseln Sie mit dem eingerichteten Verzeichnis$GOPATH/binzurück in das Verzeichnisgreeter:

cd ..

Führen Sie nun den Installationsbefehl aus:

go install

Dadurch wird Ihre Binärdatei erstellt und in$GOPATH/bin platziert. Um dies zu testen, führen Sie Folgendes aus:

ls $GOPATH/bin

Dies listet den Inhalt von$GOPATH/bin auf:

Outputgreeter

[.note] #Note: Der Befehlgo install unterstütztnot das Flag-o, sodass einer der zuvor beschriebenen Standardnamen zum Benennen der ausführbaren Datei verwendet wird.
#

Testen Sie bei installierter Binärdatei, ob das Programm außerhalb des Quellverzeichnisses ausgeführt wird. Gehen Sie zurück in Ihr Home-Verzeichnis:

cd $HOME

Verwenden Sie Folgendes, um das Programm auszuführen:

greeter

Dies ergibt folgendes:

OutputHello, World!

Jetzt können Sie die von Ihnen geschriebenen Programme in Ihr System aufnehmen und installieren, sodass Sie sie von jedem Ort aus verwenden können, wann immer Sie sie benötigen.

Fazit

In diesem Tutorial haben Sie gezeigt, wie die Go-Toolchain das Erstellen ausführbarer Binärdateien aus Quellcode vereinfacht. Diese Binärdateien können verteilt werden, um auf anderen Systemen ausgeführt zu werden, auch auf Systemen ohne Go-Tools und Umgebungen. Sie haben auchgo install verwendet, um unsere Programme automatisch als ausführbare Dateien in$PATH des Systems zu erstellen und zu installieren. Mitgo build undgo install haben Sie jetzt die Möglichkeit, Ihre Anwendung nach Belieben freizugeben und zu verwenden.

Nachdem Sie die Grundlagen vongo build kennen, können Sie mit dem TutorialCustomizing Go Binaries with Build Tags lernen, wie Sie modularen Quellcode erstellen oder mitBuilding Go Applications for Different Operating Systems and Architectures für verschiedene Plattformen erstellen. Wenn Sie mehr über die Programmiersprache Go im Allgemeinen erfahren möchten, lesen Sie die gesamtenHow To Code in Go series.