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:
-
Ein Go-Arbeitsbereich, der durch Befolgen vonHow To Install Go and Set Up a Local Programming Environment eingerichtet wurde.
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.go
im 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 run
Ihre 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 Verzeichnisgreeter
den 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.go
oder sogar eine Go-Installation verfügt.
In diesem Fall haben Sie die Anwendunggreeter
in 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.go
generiert 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 install
verhä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/bin
abgelegt ) s Verzeichnis.
Führen Sie den folgenden Befehl aus, um herauszufinden, wo sich das Verzeichnis$GOPATH
befindet:
go env GOPATH
Die Ausgabe, die Sie erhalten, variiert, aber die Standardeinstellung ist das Verzeichnisgo
in 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$PATH
hinzugefü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/bin
zurü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.