Heim >Backend-Entwicklung >Golang >Was ist der Unterschied zwischen „go build' und „go install' und wo werden ausführbare Dateien installiert?

Was ist der Unterschied zwischen „go build' und „go install' und wo werden ausführbare Dateien installiert?

DDD
DDDOriginal
2024-12-03 18:41:11311Durchsuche

What's the Difference Between `go build` and `go install`, and Where Do They Install Executables?

Untersuchung von „go install“: Entschlüsselung des Build- und Installationsprozesses

Der Unterschied zwischen „go build“ und „go“ wird in der Dokumentation oft nicht erklärt Die Installation kann Entwickler verwirren. Während die meisten erwarten, dass go install die Funktionalität von make install widerspiegelt, indem kompilierte ausführbare Dateien an einen bestimmten Speicherort verschoben werden, sind sie überrascht, dass sich die Ergebnisse im Verzeichnis GOROOT/bin befinden. Ziel dieses Artikels ist es, den Zweck und das Verhalten beider Befehle zu klären.

Was passiert eigentlich?

go build ist ein einfaches Kompilierungstool. Es stellt lediglich die ausführbare Datei zusammen und speichert sie am angegebenen Ziel. go install hingegen führt einen etwas komplexeren Prozess aus:

  • Es kompiliert die ausführbare Datei, genau wie go build.
  • Es verschiebt die ausführbare Datei nach $GOPATH/bin , um sicherzustellen, dass es über Ihre Befehlszeile zugänglich ist.
  • Es speichert alle vom Programm importierten Nicht-Hauptpakete in $GOPATH/pkg zwischen. Dieser Cache wird bei nachfolgenden Kompilierungen genutzt, sofern sich der Quellcode nicht geändert hat.

Visualisierung des Paketbaums

Zur Veranschaulichung der Auswirkungen von go build und go install, berücksichtigen Sie den folgenden Paketbaum:

.
├── bin
│   └── hello  # by go install
└── src   
    └── hello
        ├── hello  # by go build
        └── hello.go

Die ausführbare Datei „Hello“ wird von go build kompiliert und befindet sich im src/hello-Verzeichnis, während go install es in $GOPATH/bin ablegt und die Abhängigkeitscaches in $GOPATH/pkg speichert.

Kann der Installationsort angepasst werden?

Im Gegensatz zu make install bietet go install keine Option zum Angeben eines benutzerdefinierten Installationsverzeichnisses. Um dieses Maß an Kontrolle zu erreichen, ist es notwendig, ein Makefile zu erstellen, das den Build- und Installationsprozess definiert. Dieser Ansatz wird jedoch grundsätzlich nicht empfohlen.

Zusätzlicher Kontext

Weitere Einblicke finden Sie in der offiziellen Dokumentation zu folgenden Themen:

  • [gehen build](https://go.dev/ref/cmd/go#hdr-Compile_packages_and_dependencies)
  • [go install](https://go.dev/ref/cmd/go#hdr-Install_and_build_packages_and_dependencies)

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „go build' und „go install' und wo werden ausführbare Dateien installiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn