Comment une compilation croisée de Mac OS X à Linux x86?
-
21-09-2019 - |
Question
Je suis sous Mac OS X 10.5.8 et que vous voulez compiler pour cible CentOS 5.3 avec GCC 4.1.2. Comment pourrais-je:
- compiler GCC 4.1.2 toolchain et des outils connexes?
- Utilisez cet outil pour une compilation croisée pour cible CentOS 5.3?
Toute aide est grandement appréciée!
La solution
Votre solution la plus simple est de simplement exécuter CentOS 5.3 dans une machine virtuelle (par exemple Sun VirtualBox ). Cela nécessite une configuration minimale, dispose d'une charge tout à fait raisonnable (en supposant un Mac Intel), et vous serez en mesure de réellement test et debug ce que vous construisez.
Si vous insistez vraiment sur la compilation croisée, vous devez construire un compilateur croisé. Les instructions sont et
Autres conseils
Utilisation Cocotron de contre-compiler directement à partir de Xcode. Il y a un bon guide getting-started ici: http://blog.tlensing.org/tag/cocotron/
Aujourd'hui, vous pouvez probablement le faire avec Docker pour Mac , je n » ai pas t le tester parce que je n'ai pas mac. Docker crée essentiellement une machine virtuelle Linux et offre quelques belles à avoir des fonctions.
Installer docker et préparer votre image construire.
- install docker
- lancer un nouveau conteneur avec
docker run -ti centos5.3 /bin/bash
(recherche Docker Hub pour votre cible souhaitée) - installer votre version gcc désirée (quelque chose comme
sudo yum group install "Development Tools"
) - sortir votre conteneur
- run
docker ps -a
pour obtenir votre identifiant de conteneur - sauvegarde de votre conteneur en tant qu'image de construction de base
docker commit [id] centos:build
Faire un build
Maintenant, vous pouvez utiliser votre environnement de construction créé pour CentOS construit.
- pour commencer votre environnement de construction lors du montage du répertoire de travail à l'intérieur, vous pouvez utiliser quelque chose comme
docker run -it --mount type=bind,source=$(pwd),target=/mnt centos:build /bin/sh -c "cd /mnt && bash"
- puis exécutez
gcc ...
ou./configure
oumake
ouninja
ou autre pour faire votre build - vous pouvez également exécuter des tests automatisés ici si vous avez écrit une
Docker vs VM
Avec docker vous pouvez utiliser un terminal bien-aimé avec votre thème familier et keymap. En outre, il sera très probablement consommer moins de ressources pour le démarrage et lors de l'exécution.
Si votre application est graphique et vous tester en utilisant l'interaction avec son interface graphique, je suppose une machine virtuelle est toujours une meilleure option (voir @ solution est employée russe).
J'eu du mal à obtenir crosstool-ng pour construire sur OSX 10.9 pour Linux x86_64. Je poste très utile sur comment construire un compilateur croisé gcc par Jeff Preshing et son script ici comme base d'un script qui a fonctionné pour moi. Son script dans le lien ne fonctionne pas lors de la compilation glibc sur ma version de Mac OS X (ce qui semble être une plainte très commune pour ceux de la compilation croisée de Mac OS X à Linux).
Mon script est ici: https://github.com / johnlondon / Cross-compilation-toolchain-linux-pour-sur-OSX