Préparation

Tout d'abord, lire le guide de migration GCC dans la doc Gentoo!

Ce qu'on en retient: il n'y a pas grand chose à faire, sauf si vous faites un grand saut de version (ex: de 3.3 à 4.1)

Dans cet exemple, on se contente de passer de la version 4.1.1 à la version 4.1.2

Il faut faire la mise à jour de GCC dès le système de base installé, car cela limitera fortement le nombre de paquets à recompiler.


En avant

#~ emerge -va gcc

Le emerge va faire le fixlibtool_files.sh lui même (visible dans les dernières lignes, à la fin de la compilation).

Ex: ici, emerge a exécuté en fin de compilation :

fixlibtools_files.sh 4.1.1

#~ gcc -v

Pour avoir la version du gcc installé (cette fois ci: 4.1.2)


#~ gcc-config i686-pc-linux-gnu-4.1.2

Pour passer la version 4.1.2 de gcc comme compilateur par défaut


#~ env-update

#~ source /etc/profile


Problèmes éventuels

Si au milieu d'une compilation, on a une erreur du type : gcc-config error: Could not run/locate "i386-pc-linux-gnu-gcc"

Comme vous n'utilisez probablement plus un i386, il y a un problème.

Cela signifie qu'il y a encore des paquets compilés avec une ancienne mouture du compilateur:

Il faut mettre à jour tous les paquets compilés avec l'ancienne version du compilateur ("i386 ...")

#liste des paquets à mettre à jour
grep i386-pc-linux-gnu /var/db/pkg/*/*/CHOST -R|cut -d\/ -f5-6 

#mise à jour proprement dite
for package in $(grep i386-pc-linux-gnu /var/db/pkg/*/*/CHOST -R|cut -d\/ -f5-6); do emerge =${package}; done 


ou encore (moins facile à suivre avec tous les pipes, mais fait la même chose en plus rapide (trouvé sur un forum, non testé)):

emerge -1 $(grep i386-pc-linux-gnu /var/db/pkg/*/*/CHOST -r | cut -d\/ -f5-6 | sort -u | sed s/\-r[0-9]*$//g | sed s/\_[a-z]*[0-9]*//g | rev | cut -d\- -f2- | rev | sort -u)


Note pour la recherche des fichiers, Fred propose quelque chose de plus correct:

(cd  /var/db/pkg/; find -mindepth 3 -maxdepth 3 -name CHOST -print0|xargs -0 grep -l i386-pc-linux-gnu-gcc) | cut -d/ -f2-3