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 machines assistantes (le script est à exécuter depuis la machine cible).

Script pour régler finement les outils de compilation croisée

Ensuite il vous faudra installer   sur toutes les machines qui sont impliquées dans le processus. Ceci inclut la machine qui doit exécuter emerge et les machines disposant du compilateur croisé (cross-compiler). Reportez-vous à la Documentation Gentoo de Distcc pour plus d'informations sur la manière de paramétrer et d'utiliser.

Intel x86 sub-architectures
Si vous effectuez une compilation croisée entre des sous-architectures pour Intel x86 (par exemple i586 et i686), vous devez toujours compiler une chaîne de compilation croisée complète pour le CHOST désiré, ou autrement la compilation échouera. Ceci est dû au fait que i586 et i686 sont réellement des CHOSTs différents, malgré le fait qu'ils sont tous les deux considérés comme des x86. Garder cela à l'esprit lorsque vous compilez la chaîne de compilation croisée. Par example, si la machine cible est i586, ceci signifie que vous devez compiler les chaînes de compilation croisées sur vos machines assistantes i686.

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