J'ai lu Comment construire une chaîne d'outils GCC 4.7 pour la compilation croisée? et ont réussi à créer un programme de test simple qui fonctionne sur mon RPi.
Pour ce faire, j'ai dû exécuter arm-unknown-linux-gnueabi-gcc hello.c -o hello
sur mon bureau x86 et scp
l'exécutable sur mon RPi. C'est lent et compliqué. Je préfère contrôler la compilation depuis mon RPi.
J'ai lu distcc
, qui peut être utilisé pour distribuer la compilation d'une machine à une autre.
Comment installer cela? J'ai à la fois des bureaux Debian / Ubuntu et Arch Linux et les deux systèmes d'exploitation installés sur des cartes SD.
debian
archlinux
cross-compilation
Alex Chamberlain
la source
la source
export DISTCC_VERBOSE=1
Merci pour cela ! C'est ce que je recherche pour déboguer ma chaîne d'outils distccRéponses:
Ces instructions supposent que vous disposez d'un compilateur croisé fonctionnel sur l'esclave. Veuillez lire Comment construire une chaîne d'outils GCC 4.7 pour la compilation croisée? si ce n'est pas le cas. Il est également utile d'avoir
make
installé sur le maître.Installation
Tout d'abord, nous devons installer
distcc
. Nous utiliserons les packages prédéfinis fournis par les systèmes de gestion des packages des systèmes d'exploitation, mais vous êtes libre d'installer à partir des sources si vous le souhaitez!Debian
Cambre
Configuration
Esclave - Debian / Ubuntu
Nous devons ajuster les paramètres
/etc/default/distcc
. Dans votre éditeur préféré, ouvrez-le en tant que root; J'ai courusudo vim /etc/default/distcc
.Vous devez changer
STARTDISTCC
,ALLOWEDNETS
etLISTENER
. En supposant que votre maître et votre esclave se trouvent sur le même sous-réseau et que ce sous-réseau soit192.168.0.0/24
, ils doivent être définis surEn outre, vous devez ajouter le chemin d'accès à votre compilateur. Je l'ai fait en ajoutant la ligne suivante
Exécutez le démon - il serait normalement démarré au démarrage - en exécutant
Maître - Arch
Ouvrez
~/.distcc/hosts
dans votre éditeur de texte préféré et ajoutez l'adresse IP des esclaves. Monhosts
dossier était composé d'une seule ligne, qui se lisait192.168.0.22
.Utilisation
Tout va bien, vous devriez pouvoir utiliser distcc tout simplement. Par exemple, pour compiler
hello.c
àhello.o
, termeExemple: Bonjour tout le monde!
J'ai mis en place un exemple simple dans mon répertoire personnel, composé de 2 fichiers.
L'exécution
make hello
se compilera localement; vous devez d'abord le faire comme un test rapide. Allez, je vais attendre.Running
make hello CC="distcc arm-unknown-linux-gnueabi-gcc"
exécutera une compilation distribuée.Débogage
Il m'a fallu un certain temps pour que cela fonctionne correctement, et le meilleur outil de débogage que j'ai trouvé était une simple variable d'environnement. Si vous
le
distcc
client produira des charges d'informations utiles.Ceci est un long post, donc tous les commentaires seront reçus avec gratitude. J'espère que je me suis souvenu de toutes les étapes!
la source