web-dev-qa-db-fra.com

Les binaires Golang sont-ils portables?

Supposons que je sois un utilisateur principalement Linux, mais que je développe une application dans Go que je veux être multiplateforme. J'ai cherché autour, mais je n'arrive pas à trouver d'informations pour absoudre les éléments suivants:

  1. Si je go install un binaire sur mon système AMD64 Ubuntu, cela fonctionnera-t-il également sur pour quelqu'un d'autre Système Ubuntu/Debian 64 bits?
  2. Comment puis-je utiliser go install pour construire un binaire x86_64 qui fonctionnera également prêt à l'emploi sur des Debianlikes 32 bits?
  3. Si je dois utiliser Windows pour créer un binaire qui s'exécutera sur Windows, comment puis-je également m'assurer que même si mon système Windows est en 64 bits, l'exécutable sera construit pour x86_64?

En fait, mes questions se résument à "dans quelle mesure le compilateur/éditeur de liens de go est-il statique/portable?"

34
cat
  1. Oui, il sera; cela est vrai pour pratiquement tous les binaires compilés pour Linux 64 bits, pas seulement ceux écrits en Go (sauf pour les bibliothèques partagées, sur lesquelles Go ne s'appuie pas)
  2. Vous pouvez définir les variables d'environnement GOOS et GOARCH avant de créer: GOOS=windows GOARCH=386 go build (ou go install ou autre), etc.
  3. Par défaut, un binaire sera construit pour le système que vous utilisez, mais ce n'est pas nécessaire - voir 2
42
joshlf