Maison >développement back-end >Golang >Comment créer des binaires statiques dans Golang avec Docker Scratch : CGO_ENABLED=0 et -ldflags ?

Comment créer des binaires statiques dans Golang avec Docker Scratch : CGO_ENABLED=0 et -ldflags ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 04:59:28716parcourir

 How to Create Static Binaries in Golang with Docker Scratch: CGO_ENABLED=0 and -ldflags?

Drapeaux pour créer des binaires statiques dans Golang

Lors de la construction d'un binaire statique dans Golang à l'aide de la base scratch Docker, il est essentiel d'inclure à la fois CGO_ENABLED =0 et -ldflags '-extldflags "-static"'. Bien que les deux options puissent sembler redondantes, elles jouent des rôles distincts dans la réalisation de binaires statiques.

CGO_ENABLED=0

Cet indicateur désactive l'utilisation du code C dans le runtime Go. CGO (C Go) permet de s'interfacer avec le code C dans les programmes Go. En définissant CGO_ENABLED=0, vous empêchez Go de tenter de se connecter à des bibliothèques C, garantissant ainsi que le binaire construit est autosuffisant.

-ldflags '-extldflags "-static"'

Cet indicateur indique à l'éditeur de liens d'utiliser l'option -static lors de la liaison de bibliothèques externes. -static indique à l'éditeur de liens d'inclure toutes les dépendances de manière statique dans le binaire, plutôt que de compter sur leur présence dans l'environnement d'exécution. Cela élimine le besoin de recherches dans la bibliothèque d'exécution et rend le binaire indépendant de la disponibilité de la bibliothèque externe.

En combinant les deux indicateurs, vous vous assurez que le binaire construit est entièrement statique, contenant à la fois le runtime Go et toutes les dépendances externes nécessaires au sein. son code exécutable. Cela garantit que le binaire peut être exécuté dans n'importe quel environnement sans nécessiter de composants d'exécution supplémentaires ni de liaison dynamique.

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