Maison >développement back-end >Golang >Quelle est la différence entre « go build » et « go install », et où installent-ils les exécutables ?

Quelle est la différence entre « go build » et « go install », et où installent-ils les exécutables ?

DDD
DDDoriginal
2024-12-03 18:41:11311parcourir

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

Disséquer "go install" : démêler le processus de construction et d'installation

Souvent laissée inexpliquée dans la documentation, la distinction entre go build et go l'installation peut laisser les développeurs perplexes. Alors que la plupart s'attendent à ce que go install reflète la fonctionnalité de make install en déplaçant les exécutables compilés vers un emplacement désigné, ils sont surpris de trouver les résultats résidant dans le répertoire GOROOT/bin. Cet article vise à clarifier le but et le comportement des deux commandes.

Que se passe-t-il réellement ?

go build est un outil de compilation simple. Il assemble simplement le fichier exécutable et le stocke à la destination spécifiée. go install, en revanche, exécute un processus légèrement plus complexe :

  • Il compile le fichier exécutable, tout comme go build.
  • Il déplace l'exécutable vers $GOPATH/bin , en vous assurant qu'il est accessible depuis votre ligne de commande.
  • Il met en cache tous les packages non principaux importés par le programme dans $GOPATH/pkg. Ce cache est exploité lors des compilations ultérieures, à condition que le code source n'ait pas changé.

Visualisation de l'arborescence des packages

Pour illustrer les effets de go build et go install, considérez l'arborescence de paquets suivante :

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

L'exécutable hello est compilé par go build et réside dans le src/hello, pendant que go install le place dans $GOPATH/bin et stocke les caches de dépendances dans $GOPATH/pkg.

L'emplacement d'installation peut-il être personnalisé ?

Contrairement à make install, go install ne fournit pas d'option permettant de spécifier un répertoire d'installation personnalisé. Pour atteindre ce niveau de contrôle, il est nécessaire de créer un Makefile qui définit le processus de construction et d'installation. Cependant, cette approche n'est généralement pas recommandée.

Contexte supplémentaire

Pour plus d'informations, reportez-vous à la documentation officielle sur les sujets suivants :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn