¿Los binarios de Golang son portátiles?


Supongamos que soy un usuario principalmente de Linux, pero estoy desarrollando una aplicación en Go que quiero ser multiplataforma. He buscado por ahí, pero parece que no puedo encontrar información para absolver lo siguiente:

  1. Si yo go install un binario en mi sistema Ubuntu amd64, ¿funcionará también en el sistema Ubuntu/Debian de 64 bits de alguien más?
  2. ¿Cómo puedo usar go install para construir un binario x86_64 que también se ejecutará fuera de la caja en Debianlikes de 32 bits?
  3. Si debo usar Windows para hacer un binario que se ejecutará en Windows, ¿cómo puedo también asegurar que incluso si mi sistema Windows es de 64 bits el ejecutable se construirá para x86_64?

Mis preguntas en efecto se reducen a: "¿qué tan estático/portable es el enlazador/compilador de go?"

Author: cat, 2015-11-23

1 answers

  1. Sí lo hará; esto es cierto básicamente para todos los binarios compilados para Linux de 64 bits, no solo los escritos en Go (excepto para las bibliotecas compartidas, en las que Go no depende)
  2. Puede establecer las variables de entorno GOOS y GOARCH antes de compilar: GOOS=windows GOARCH=386 go build (o go install o lo que sea), etc
  3. Por defecto se construirá un binario para el sistema que esté ejecutando, pero esto no es necesario - ver 2
 38
Author: joshlf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-23 14:05:59