Re: Question technique

Top Page

Reply to this message
Author: Daniel Veillard
Date:  
To: rouat
CC: guilde
Subject: Re: Question technique
> .. et pas necessairement liee a linux:
>
> quand on compile une nouvelle version de GCC, la derniere
> phase consiste a ce que GCC se recompile lui-meme (bootstraping).
>
> Quelqu'un sait-il pourquoi ?


Tiens, j'avais pas donne ma version ... Je repare cet oubli:

 Usuellement la recompilation d'un nouveau compilateur est faite en
trois phases :
   1 la premiere utilise le compilateur natif, pas d'optimisation
     le strict minimum pour bootstrapper le processus et obtenir
     un binaire du nouveau processus, on se moque des perfs on veut
     juste que ca compile et que ca tourne.
   2 la deuxieme etape consiste a recompiler ce coups ci avec toutes
     les optimisations en utilisant le nouveau compilateur (1). le code
     genere n;est alors plus dependant que du code source du nouveau
     compilo. normalement le code optemu n'est plus dependant de celui
     utilise a l'etape 1
     Theoriquement le compilateur obtenu a cette etape est "bon pour le
     service"
   3 En regle generale on fait une troisieme etape qui consiste a recompiler
     le ccompilo avec les memes options qu'a l'etape 2 en utilisant celui
     genere en 2/ . A la fin on fait une comparaison binaire entre les
     resultats de 2 et 3 qui doivent etre strictement identiques (excepte
     la date du binaire). C'est une etape de validation importante qui
     evite d'installer un binaire pas catholique (exemple la machine
     de compil peut etre instable et generer des binaires incorrects,
     cet etape permet de detecter les ennuis "subtils").


Daniel