TL/DR : Où puis-je trouver plus d'informations sur la construction d'une chaîne d'outils de compilation croisée GCC 4.7.0 pour la plateforme ARM (gnueabi) (destinée à fonctionner sur un appareil Raspberry Pi) ?
Je viens de recevoir un tout nouveau Raspberry Pi et je suis très impatient de commencer à programmer pour lui. J'ai réussi à installer la chaîne d'outils GCC (j'utilise l'image système Arch Linux) et à compiler quelques programmes de base, tout fonctionne bien.
J'ai également essayé de compiler les bibliothèques Boost car je les utilise souvent dans mes projets et tout semblait fonctionner correctement en suivant les instructions ( ./bootstrap.sh
+ ./b2
) sauf pour le fait que la compilation était douloureusement lente. Je l'ai laissé tourner pendant quelques heures mais il a à peine dépassé les premiers fichiers sources. Après l'avoir laissé tourner pour la nuit, j'ai découvert que le processus de compilation s'était interrompu à cause d'un manque de RAM.
Je pense donc que le Rasp Pi n'est tout simplement pas assez puissant pour compiler quelque chose d'aussi important que Boost. Donc, la compilation croisée me vient à l'esprit. Cependant, même s'il y a beaucoup d'informations sur la compilation croisée ARM disponibles en ligne, je trouve cela confus. Par où commencer ?
J'ai une version récente de GCC (4.7.0) disponible sur mon Raspberry Pi, donc je voudrais idéalement faire une compilation croisée avec la même version. Où puis-je obtenir la chaîne d'outils GCC 4.7.0 pour ARM (je vais compiler sur x86 CentOS 6.2) ?
Edit :
J'ai désalloué la mémoire inutile du GPU et mis en place une partition swap de 4 Go sur une clé USB, tandis que les fichiers de compilation sont sur un partage NFS. Boost compile maintenant beaucoup plus rapidement, ce qui est gérable. J'aimerais cependant savoir comment configurer une chaîne d'outils GCC 4.7 pour la compilation croisée sur mon PC x86, car j'ai l'intention de faire beaucoup de compilation et je voudrais qu'elle soit aussi rapide que possible.
Edit 2 :
Comme GCC 4.7.0 est relativement récent, il ne semble pas y avoir de compilateur croisé pré-construit (i386->ARM). Je vais probablement devoir en construire un moi-même, ce qui semble être une tâche non triviale (j'ai essayé et échoué). Quelqu'un connaît-il un tutoriel à suivre pour construire un compilateur croisé GCC, si possible pour l'une des versions récentes ?
J'ai essayé avec ce grand shell script (qui a bien fonctionné pour construire un compilateur de la même architecture) et j'ai réussi à construire binutils
et les prérequis de GCC, mais ensuite la construction de GCC a continué à échouer avec de nombreuses erreurs cryptiques. Je suis vraiment perdu ici, donc j'apprécierais grandement votre aide.
GCC sur Raspberry Pi a été configuré avec
--prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib
--mandir=/usr/share/man --infodir=/usr/share/info
--with-bugurl=https://bugs.archlinux.org/
--enable-languages=c,c++,fortran,lto,objc,obj-c++ --enable-shared
--enable-threads=posix --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-clocale=gnu
--disable-libstdcxx-pch --enable-libstdcxx-time
--enable-gnu-unique-object --enable-linker-build-id --with-ppl
--enable-cloog-backend=isl --enable-lto --enable-gold
--enable-ld=default --enable-plugin --with-plugin-ld=ld.gold
--with-linker-hash-style=gnu --disable-multilib --disable-libssp
--disable-build-with-cxx --disable-build-poststage1-with-cxx
--enable-checking=release --host=arm-unknown-linux-gnueabi
--build=arm-unknown-linux-gnueabi
Edit 3 :
J'ai réussi à construire un toolchain GCC 4.7 pour ARM (yay !) en utilisant ce shell script comme le suggère l'utilisateur dwelch dans les commentaires. J'ai également construit newlib
y libstdc++
en utilisant cet article comme guide. La chaîne d'outils fonctionne bien, mais lorsque je lance l'exécutable sur mon Raspberry Pi, il échoue avec le message suivant Illegal instruction
. Quelle pourrait en être la cause ?
0 votes
Il y a quelques toolchains x86 ici : github.com/raspberrypi/tools/tree/master/arm-bcm2708
0 votes
Je n'ai pas trouvé la version 4.7, mais les compilateurs croisés GCC 4.6 ARM sont disponibles à l'adresse suivante https://launchpad.net/gcc-arm-embedded/+téléchargement .
1 votes
Essayez le paquet zram s'il n'est pas déjà installé. Cela créera un swap de RAM compressé, ce qui aidera plus que vous ne le pensez. (Assez bizarrement.) Ajoutez aussi un périphérique USB assez rapide, soit un disque dur USD, soit une clé USB de haute qualité et mettez-y un swap.
3 votes
De plus, dans ce fil de discussion, vous pouvez lire comment désactiver la mémoire graphique afin de gagner 32 mégas de RAM : raspberrypi.org/phpBB3/viewtopic.php?f=5&t=4831&p=65410
1 votes
Wow, merci. J'avais en fait 128 Mo alloués au GPU. Pas étonnant que tout soit si lent.
1 votes
Essayez aussi zram, c'est vraiment génial. Il fait un monde de différence sur l'EeePC701 qui a un CPU 800MHz pré-Atom (Celeron-M à l'ancienne) et 512 megs de RAM.
0 votes
Pour la postérité, j'ai oublié de mettre
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
,CONFIG_SECCOMP_FILTER=y
yCONFIG_VFP=y
lors de la compilation dulinux-rpi-3.14.y
noyau, et j'ai expérimenté beaucoup deIllegal instruction
lors du démarrage d'un2014-01-07-wheezy-raspbian.img
.0 votes
Duplicata possible de Installation du compilateur croisé Raspberry Pi