161 votes

Compilation croisée Allez sur OSX?

Je suis en train de cross-compiler un aller app sur OSX pour créer des binaires pour windows et linux. J'ai lu tout ce que j'ai pu trouver sur le net. Plus proche de l'exemple que j'ai trouvé a été publié sur (à part de nombreux inachevé discussions sur go-écrous liste de diffusion):

http://solovyov.net/en/2012/03/09/cross-compiling-go/

pourtant, il ne fonctionne pas sur mon installation. Je dois aller 1.0.2. Comme 1.0.2 est assez récent, il me semble que tous les exemples ci-dessus ne s'appliquent pas à cette version.

Essayé de faire, en ./make.bash --no-clean avec ENV vars ensemble de 386/windows, il n'construire, cependant il s'appuie aller pour mon installation qui est - darwin/amd64 et ignore complètement ce qui est définie dans l'ENV qui suppose de construire différents compilateur.

Tout conseille comment on peut le faire (si on peut le faire à tous)?

143voto

ljgww Points 947

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.

4voto

levtatarov Points 561

J'ai trouvé cet article sur la compilation croisée aller. Le gars qui l’a écrit a aussi une utilité très pratique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X