6 votes

Une façon simple de compiler des librairies tierces pour Raspberry Pi.

J'essaie de porter une application Linux C++ existante sur Raspberry Pi. L'application dépend d'un certain nombre de bibliothèques tierces.

J'utilise Ubuntu 12.04, et j'ai construit mon compilateur croisé GCC 4.7 en utilisant crosstools-ng (je me suis rendu compte plus tard que j'aurais pu m'épargner la peine d'utiliser une chaîne d'outils fournie officiellement !) Je suis capable de produire des exécutables fonctionnels pour mon Raspberry. Jusqu'à présent, tout va bien.

J'ai alors commencé à essayer de construire toutes les dépendances de mes bibliothèques tierces : GLib, SDL et plusieurs autres. Chacune de ces dépendances avait ses propres dépendances, etc. Il est rapidement apparu que la construction manuelle de versions ARM de toutes ces bibliothèques serait incroyablement fastidieuse et prendrait beaucoup de temps. Existe-t-il un moyen plus simple ?

3voto

Nick Hutchinson Points 1831

Après avoir découvert ScratchBox2 j'ai réussi à bricoler quelque chose d'utilisable. ScratchBox2 est un outil qui facilite la création d'un chroot adapté à la compilation croisée et qui fait usage de QEmu qui vous permet d'exécuter des binaires de PC étrangers sur votre ordinateur. Dans mon cas, ScratchBox2 permet d'accéder à un bac à sable autonome de Raspbian, une variante ARM de Debian optimisée pour le Raspberry Pi.

Le résultat est qu'une fois que j'ai tout mis en place - et cela m'a pris plusieurs heures fastidieuses - j'ai pu simplement taper sb2 -eR apt-get install ... pour obtenir tous les paquets ARM nécessaires. C'est un truc magique. (Mot d'avertissement : Je n'ai pas eu de chance avec les paquets officiels de ScratchBox2 dans Ubuntu 12.10, il est donc préférable de le compiler vous-même à partir des sources, en utilisant une révision récente de l'archive Dépôt Git officiel .)

Pour vous aider à reproduire mon installation plus facilement, j'ai mis une recette Vagrant pour ma machine virtuelle sur Github : https://github.com/nickhutchinson/raspberry-devbox . C'était ma première expérience avec l'outil d'approvisionnement Puppet, mais j'espère que d'autres pourront le rendre plus robuste.

J'ai trouvé ces ressources très utiles :

2voto

olokki Points 722

Consultez le cadre de construction openembedded . Il est conçu pour automatiser toutes les tâches fastidieuses de la compilation croisée.

Le projet openembedded a ajouté la prise en charge d'un fichier de type cible raspberry-pi

Vous pouvez utiliser un sdk openembedded distro tel que poky o angström pour mettre les choses en place et vous aider à démarrer.

Poky peut cracher rpm, ipk, deb. La plupart d'entre eux vont fonctionner sur d'autres distros. Vous n'avez donc pas besoin d'utiliser la distro poky elle-même.

Ici est un guide sur l'utilisation d'openembedded avec raspberry-pi

Après cela, vous pouvez créer une recette bitbake ou une couche oe personnalisée définissant les dépendances de votre application. Jetez un coup d'oeil au manuel de poky pour la documentation pertinente.

Une autre option avec ou sans openembedded est de charger un environnement de développement complet sur une machine qemu-arm et d'utiliser les binaires sur l'image de production. Openemmbedded/poky a une recette d'image cible pour une image sdk qemu-arm.

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