Distcc/Cross-Compiling/fr

Ce guide vous explique comment configurer distcc pour la compilation croisée à travers différentes architectures de processeur.

Introduction
est un outil qui vous permet de partager les tâches de compilation d'un logiciel sur plusieurs ordinateurs en réseau. Tant que les ordinateurs en réseau utilisent tous la même chaîne d'outils compilée pour la même architecture, aucune configuration spéciale de  n'est requise. Mais que faire pour compiler pour différentes architectures en utilisant des ordinateurs différents ? Ce guide va vous montre comment configurer  pour compiler pour différentes architectures.

Installer les utilitaires nécessaires
Tout d'abord, vous devez installer  sur toutes les machines qui seront impliquées dans le processus de compilation. est un outil qui permet une compilation facile de la chaîne des outils de compilation croisée. Il a été écrit à l'origine par Joshua Kinard et a été réécrit totalement par Mike Frysinger. Son utilisation est assez directe :  compile une chaîne d'outils complète en ciblant l'architecture Sparc. Ceci inclut binutils, gcc, glibc, et linux-headers. Si vous avez besoin de plus d'aide, essayez d'exécuter. Évidemment, vous devrez installer la chaîne des outils de compilation croisée sur tous les ordinateurs participants.

Si vous voulez régler finement la chaine de compilation croisée (cross-toolchain), voici un script qui produira une ligne de commande avec la version exacte du paquet de développement croisé à construire sur les boîtes assistantes (le script est à exécuter depuis la boîte cible).

Script to fine-tune cross development tools

Next, you will need to emerge  on all the machines that will be involved in the process. This includes the box that will run emerge and the boxes with the cross-compilers. Please see the Gentoo Distcc Documentation for more information on setting up and using.

Intel x86 subarchitectures
If you are cross-compiling between different subarchitectures for Intel x86 (e.g. i586 and i686), you must still build a full cross-toolchain for the desired CHOST, or else the compilation will fail. This is because i586 and i686 are actually different CHOSTs, despite the fact that they are both considered "x86." Please keep this in mind when you build your cross-toolchains. For example, if the target box is i586, this means that you must build i586 cross-toolchains on your i686 helper boxes.

SPARC
Utiliser  pourrait échouer avec une des erreurs suivantes :

Erreurs affichées lors de l'exécution de crossdev -t sparc

Si cela vous arrive, essayez la commande suivante à la place de la précédente :

Configurer distcc pour des compilations croisées correctes
Dans la configuration par défaut de distcc, la compilation croisée ne fonctionnera pas correctement. Le problème est que beaucoup d'ebuilds appellent simplement le compilateur  au lieu de l'appeler par son nom complet (par exemple,    ). Quand cette compilation est distribuée sur une machine participante, le compilateur natif est appelé à la place de votre compilateur croisé flambant neuf.

Fortunately, there is a workaround for this little problem. All it takes is a wrapper script and a few symlinks on the box that will be running. We'll use a Sparc box as an example. Wherever you see  below, you will want to insert your own CHOST (  for an AMD64 box, for example). When you first emerge distcc, the directory looks like this:

Voici ce que vous devez faire :

Ensuite, nous allons créer le nouveau script sur cette machine. Lancez votre éditeur favori et créez un fichier avec le texte suivant, puis sauvegardez-le comme. Pensez à remplacer CHOST (dans ce cas,   ) par le CHOST réel de la machine qui exécutera la commande emerge.

Le nouveau script enveloppe

Ensuite, nous allons rendre le script exécutable et créer les liens symboliques corrects :

Voilà, c'est terminé. devrait ressemble à ceci :

Next we want to make sure that these wrappers stay available after upgrading the distcc package as it will overwrite the symbolic links. We can do this through a file that looks like so:

/etc/portage/bashrc

Félicitations ! Vous disposez maintenant d'une configuration distcc de compilation croisée fonctionnelle.

Comment ça marche
Lorsque  est appelé, il recherche ce qui est appelé  (par exemple  ,   , etc.) Lorsque distcc distribue ensuite la compilation à une machine assistante, il lui passe le nom par lequel il a été appelé. Le démon distcc sur l'autre machine assistante recherche alors un binaire de ce nom. S'il voit simplement  , il cherchera    , qui est probablement le compilateur natif sur la machine assistante, si ce n'est pas la même architecture que celle de la machine exécutant la commande. Quand le nom complet du compilateur est envoyé, (par exemple,   ), il ne peut y avoir de  confusion.

Remerciements
Nous tenons à remercier les auteurs et éditeurs suivants pour leur contribution à ce guide :


 * Andrew Gaffney
 * Joshua Saddler