La compilation croisée Aller 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/

mais 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 ./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 à tout)?

  • parallèlement à cela, j'ai demandé la même question sur golang-noix de liste de diffusion, et avec le genre de l'aide et de la patience des gens finale recette fait cuire... c'est le sujet de discussion: groups.google.com/forum/?fromgroups=#!topic/golang-noix/... il y a eu plusieurs étapes et conclusions, j'ai eu mal sur le chemin, mais maintenant, la recette semble assez simple en 3 étapes et quelques itérations.
  • maintenant que je suis aller sur récapituler, je me promène pourquoi ENV vars ne déclenchent pas de compilation correcte - peut-être parce que je n'ai sudo (probablement, je voudrais obtenir différents unix ENV quand sudo-ing donc GOOS & GOARCH ne serait pas disponible si ils ne sont pas fait inline)
  • re: jdi - j'essayais juste de compiler mon "maquette" go app win/lin binaires sur mac, mais pour faire ça, j'ai dû construire aller lui-même pour chaque combinaison de plate-forme/processeur. (ne peut pas répondre à ma propre question encore - n'ayant pas assez de réputation ici)
  • Avez-vous tapez exactement ce qu'il dit dans l'exemple? CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash - si vous avez essayé de fractionner dans plus d'une ligne, alors la variable d'environnement ne sera pas exporté, ce qui correspond à l'symptômes
  • Assurez-vous de ne pas confondre l'hôte et la cible de l'architecture. Vous devriez voir cette sortie: "# Construction de compilateurs et d'Aller bootstrap outil pour l'hôte, darwin/amd64." "# Création de packages et les commandes de l'hôte, darwin/amd64." "# Création de packages et des commandes pour windows/386."
  • Cela m'a beaucoup aidé: code.google.com/p/go-wiki/wiki/WindowsCrossCompiling
  • comme pour: code.google.com/p/go-wiki/wiki/WindowsCrossCompiling m'a beaucoup aidé, mais sur une dernière ligne - comment compiler cible. Le reste est confus pour moi, c'est pour quelqu'un qui sait scripts shell dans les détails et il semble qu'il est construit pour l'installation de linux, peut-être qu'il serait de travailler sur mac, donc je n'ai pas suivi que je voulais apprendre étapes exactes. Je ne suis pas bon avec les scripts shell.
  • Re Nick: Oui, au départ j'ai fait export GOOS=windows et tous les autres avant de compiler les compilateurs. Je ne savais pas quoi faire je pensais ne faire ne de la croix de la compilation de mon application mais j'ai ensuite appris qu'il compile en fait un compilateur. SUDO ne peut pas hériter d'ENV donc je pense que certains de mes premières tentatives ont échoué en raison de cette UNIX mise en garde.
  • la page du wiki: oui, il fonctionne très bien sur mac, mais vous avez raison, vous avez besoin d'un peu de script shell connaissances. Après l'exécution des scripts, je peux le faire maintenant: définir les variables d'environnement GOARCH et GOOS et la compilation génère un binaire travail pour la plate-forme/os dans ces variables.
  • Je suppose que dans de nombreux cas, les x-compilation se passe si vous travaillez sur code sur certains poste de travail qui est déployée à un serveur qui exécute d'autres os. Par exemple, j'ai développer sur Mac et de les déployer sur Linux et mon cycle était de l'écriture de code, compiler pour linux, le transfert de serveur. Dans ce cas, je suppose que l'exportation GOOS/GOARCH serait la meilleure solution. La définition inline est une meilleure option pour moi, car mon but est d'écrire une application qui peut être déployé sur différents Systèmes d'exploitation.
  • sudo nettoie l'environnement, ce qui pourrait avoir été la cause de votre problème. Voir l'argument-E pour sudo, si vous avez vraiment besoin de l'utiliser.
  • J'ai trouvé cet article à propos de la compilation croisée aller. Le mec qui a écrit il dispose également d'un très pratique util pour elle.

InformationsquelleAutor ljgww | 2012-08-28