Grâce à l'aimable et patient de l'aide de golang-noix, la recette est la suivante:
1) On doit compiler Aller compilateur pour cibles différentes plates-formes et architectures. Cela se fait dans le dossier src à aller de l'installation. Dans mon cas, aller de l'installation est situé dans /usr/local/go
donc pour compiler un compilateur, vous devez émettre make
utilitaire. Avant de faire cela, vous devez connaître quelques mises en garde.
Il y a une question à propos de CGO de la bibliothèque lors de la compilation croisée de sorte qu'il est nécessaire de désactiver CGO bibliothèque.
La compilation se fait en changeant l'emplacement de la source de dir, comme la compilation doit être fait dans ce dossier
cd /usr/local/go/src
compilez puis Aller compilateur:
sudo GOOS=windows GOARCH=386 CGO_ENABLED=0 ./make.bash --no-clean
Vous devez répéter cette étape pour chaque système d'exploitation et l'Architecture que vous souhaitez faire de la compilation croisée en changeant GOOS et GOARCH paramètres.
Si vous travaillez en mode utilisateur, comme je le fais, sudo est nécessaire parce que aller compilateur est dans le système dir, sinon vous avez besoin d'être connecté en tant que super-utilisateur. Sur Mac, vous devrez peut-être activer/configurer SU accès (il n'est pas disponible par défaut), mais si vous avez réussi à installer allez-vous peut-être déjà avoir accès à la racine.
2) une Fois que vous avez tous les compilateurs croisés construit, vous pouvez heureusement cross compiler votre application en utilisant les paramètres par exemple:
GOOS=windows GOARCH=386 go build -o appname.exe appname.go
GOOS=linux GOARCH=386 CGO_ENABLED=0 go build -o appname.linux appname.go
Changement GOOS et GOARCH aux objectifs que vous souhaitez construire.
Si vous rencontrez un problème avec CGO inclure CGO_ENABLED=0 dans la ligne de commande, notez également que les binaires pour linux et mac n'ont pas d'extension de sorte que vous pouvez ajouter une extension pour le plaisir d'avoir des fichiers différents. -o commutateur indique à aller faire du fichier de sortie comme les anciens compilateurs c/c++ ainsi au-dessus utilisé appname.linux peut être tout autre extension.