Cross-Compiling Golang …

Compilar seu código go em um binário é muito simples:

$ go install <package>

Isso construirá o binário para seu sistema operacional e arquitetura atuais. Mas também é possível compilar binários para outros sistemas operacionais e até arquiteturas. Você só precisa modificar algumas variáveis ​​de ambiente:

  • GOARCH – a arquitetura, por exemplo, amd64, 386 ou arm
  • GOOS – o sistema operacional – linux, darwin ou windows

Construindo o compilador primeiro …

Você pode dar uma olhada na saída de go envpara ver a aparência de sua configuração atual. Mas, para realmente fazer a compilação cruzada, você precisa primeiro construir os compiladores.

Com Mac OS / Homebrew, basta instalar vá com --cross-compile-commonou --cross-compile-all. Veja a receita para detalhes.

Se você instalou o Go from source, apenas defina as variáveis ​​e chame ./all.bashna srcpasta cada combinação GOARCH/ que GOOSvocê precisa.

Este guia pode ajudar se você estiver totalmente perdido.

Construindo seu projeto …

De volta ao nosso projeto. Semelhante a construir o compilador, você só precisa modificar as variáveis ​​de ambiente e chamar go build como antes. Go agora criará uma subpasta que ./bin/corresponde à sua combinação os / arch. Aqui você encontrará seu binário crosscompiled. Obviamente, você também pode passar o varis em uma linha:

$ GOARCH=arm GOOS=linux go build helloworld

PS: Se você deseja fazer uma compilação cruzada para ARM v5 / v6 CPU (por exemplo, para o raspberry pi), você precisa definir o GOARM=5uso de diferentes conjuntos de operações para matemática de ponto flutuante.