Estimation du temps de construction: 22 minutes Estimation de l'espace disque requis: 168 MB |
Ce package est connu pour se comporter bizarrement si vous avez changer les options d'optimisation par défaut (y compris les options -march et -mcpu). GCC se comporte mieux sans, donc nous vous recommendons de supprimer CFLAGS, CXXFLAGS et toute autre variable/option qui pourrait changer l'optimisation par défaut du package.
Installez GCC en lançant les commandes suivantes:
patch -Np1 -i ../gcc-2.95.3-2.patch && mkdir ../gcc-build && cd ../gcc-build && ../gcc-2.95.3/configure --prefix=/usr --enable-languages=c,c++ \ --disable-nls --disable-shared --enable-threads=posix && make BOOT_LDFLAGS=-static bootstrap && make prefix=$LFS/usr install && cd $LFS/lib && ln -sf ../usr/bin/cpp && cd $LFS/usr/lib && ln -sf ../bin/cpp && cd $LFS/usr/bin && ln -sf gcc cc |
patch -Np1 -i ../gcc-2.95.3-2.patch: Ce nouveau patch traite la gestion incorrecte des symboles faibles, la sur-optimisation des appels vers ces symboles, un problème sur atexit et le symbole __dso_handle requis pour la fonction propre de atexit.
make BOOT_LDFLAGS=-static: Ceci est l'équivalent de LDFLAGS=-static que nous utilisons avec d'autres packages pour les compiler statiquement.
--prefix=/usr: Ce n'est PAS une erreur de frappe. GCC garde en dur certains chemins lors de la compilation et nous devons donc donner /usr lors du ./configure. Nous donnons le vrai préfixe du chemin d'installation plus tard lors de la commande make install.
--enable-languages=c,c++: Ceci ne crée que les compilateurs C et C++, et pas les autres compilateurs disponibles, parce qu'ils sont en moyenne très peu utilisés. Si certains de ces autres compilateurs sont nécessaires, le paramètre --enable-languages peut être omis.
--enable-threads=posix: Ceci permet la gestion des exceptions C++ pour le code multithread.
ln -sf ../usr/bin/cpp: Ceci crée le lien symbolique $LFS/lib/cpp. Certains packages essaient explicitement de trouver cpp dans /lib.
ln -sf ../bin/cpp: Ceci crée le lien symbolique $LFS/usr/lib/cpp, parce qu'il y a des packages qui s'attendent à ce que cpp soit dans /usr/lib.
Le package GCC contient des compilateurs, des préprocesseurs et la bibliothèque GNU C++.
Un compilateur transforme du code source au format texte en un format compréhensible par un ordinateur. Une fois le code source compilé, on obtient un fichier objet. A partir d'un ou plusieurs fichiers objets, et une fois l'édition de liens effectuée, nous obtenons un fichier exécutable.
Un préprocesseur modifie un fichier source avant toute autre utilisation, par exemple pour inclure les fichiers d'en-tête. Cette automatisation permet de gagner beaucoup de temps. Il suffit d'insérer une ligne comme #include <nom-de-fichier>. Le préprocesseur insère alors le contenu de ce fichier dans le fichier source. C'est une des choses dévolues à un préprocesseur.
La bibliothèque C++ est utilisée par les programmes C++. Cette bibliothèque contient les principales fonctions utilisées dans les programmes C++. De cette façon, le programmeur n'a pas à écrire certaines fonctions (telles que celles réalisant l'affichage d'un texte à l'écran) chaque fois qu'il crée un programme.
GCC-2.95.3 nécessite l'installation de :
sh du package bash
ar du package binutils
as du package binutils
ld du package binutils
nm du package binutils
ranlib du package binutils
cmp du package diffutils
chmod du package fileutils
cp du package fileutils
ln du package fileutils
ls du package fileutils
mkdir du package fileutils
mv du package fileutils
rm du package fileutils
touch du package fileutils
find du package find
gcc du package gcc
cc du package gcc
egrep du package grep
grep du package grep
make du package make
mawk du package mawk
sed du package sed
basename du package sh-utils
echo du package sh-util
expr du package sh-utils
sleep du package sh-utils
true du package sh-utils
uname du package sh-utils
tar du package tar
makeinfo du package texinfo
cat du package textutils
head du package textutils
sort du package textutils
tail du package textutils
tr du package textutils
uniq du package textutils