J'ai une grande application que j'ai écrite. Je peux compiler avec succès l'application dans les scénarios suivants:
- dans une compilation native pour l'hôte i386 exécutant Ubuntu 12.04
- nativement sur un PandaBoard exécutant Ubuntu 12.04 (cela prend beaucoup de temps)
- utiliser Qemu et un chroot sur le PC hôte pour la cible armhf PandaBoard (cela prend beaucoup de temps)
Je voudrais compiler de manière croisée l'application sur l'hôte i386 pour qu'elle s'exécute sur une cible telle que le PandaBoard afin de terminer les builds en temps opportun. Jusqu'à présent, les tentatives faites en utilisant la chaîne d'outils arm-linux-gnueabihf dans les référentiels ont produit des binaires qui ne fonctionnent pas correctement. À ce stade, je n'ai pas l'intention d'emballer le logiciel.
Quelle est la méthode recommandée pour réussir une compilation croisée?
software-installation
cross-compilation
Jonathan Cave
la source
la source
Réponses:
https://wiki.linaro.org/Platform/DevPlatform/CrossCompile/UsingMultiArch
https://wiki.ubuntu.com/MultiarchCross
Ubuntu a une chaîne d'outils croisée,
apt-get install gcc-arm-linux-gnueabihf
mais le travail sur la chaîne d'outils de nouvelle génération est discuté ici: http://gsoc.sitedethib.com/posts/apt-get_install_gcc-4.7-arm-linux-gnueabihf/Il existe un certain nombre de solutions de contournement qui sont nécessaires à ce stade. Par exemple, si vous utilisez une liaison indirecte (couverte dans la page wiki de linaro), vous devez également éviter d'exécuter des binaires étrangers juste après les avoir compilés.
De plus, c'est vraiment le plus mature avec les outils automatiques.
J'ai obtenu mon package pour effectuer une compilation croisée assez rapidement.
la source