Installer Glibc-2.2.4

Estimation du temps de construction:           46 minutes
Estimation de l'espace disque requis:  350 MB

Installation de Glibc

Avant d'installer glibc, vous devez vous positionner dans le répertoire glibc-2.2.4 et y déballer glibc-linuxthreads, et non pas dans /usr/src comme vous le feriez normalement.

Ce package est connu pour avoir un mauvais fonctionnement si vous avez changé ses paramètres d'optimisation par défaut (incluant les options -march et mcpu). Glibc est meilleur tel quel, nous vous recommandons donc de régler CFLAGS, CXXFLAGS et d'autres variable/réglages du même type qui changeraient la configuration par défaut.

Installez Glibc en exécutant les commandes suivantes:

mknod -m 0666 /dev/null c 1 3 &&
touch /etc/ld.so.conf &&
cp malloc/Makefile malloc/Makefile.backup &&
sed 's%\$(PERL)%/usr/bin/perl%' malloc/Makefile > tmp~ &&
mv tmp~ malloc/Makefile &&
cp login/Makefile login/Makefile.backup &&
sed 's/root/0/' login/Makefile > tmp~ &&
mv tmp~ login/Makefile &&
mkdir ../glibc-build &&
cd ../glibc-build &&
../glibc-2.2.4/configure --prefix=/usr \
   --enable-add-ons --libexecdir=/usr/bin &&
cp config.make config.make.backup &&
sed 's/cross-compiling = yes/cross-compiling = no/' \
   config.make > tmp~ &&
mv tmp~ config.make &&
make &&
make install &&
make localedata/install-locales &&
exec /bin/bash --login

Une alternative à l'exécution de make localedata/install-locales est de n'installer que les locales dont vous avez besoin ou que vous voulez. Ca se fait en exécutant la commande localdef. Vous trouverez des informations à ce sujet dans le fichier INSTALL de l'arborescence de glibc-2.2.4.

Durant l'étape de configuration vous allez voir ces avertissements:

configure: warning:
*** These auxiliary programs are missing or too old: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.

Le msgfmt manquant (du package gettext que nous installerons plus tard dans ce chapitre) ne gène en rien. Le fichier que msgfmt aurait voulu créer est déjà pré-construit, il ne nous manque donc rien. Vous en aurez seulement besoin si vous faites des changemenents dans le dossier de l'aide de Glibc. Or comme nous ne faisons pas cela par défaut, nous pouvons l'ignorer en toute sécurité.

Explication des commandes

mknod -m 0666 /dev/null c 1 3: Glibc a besoin d'un périphérique null pour compiler correctement. Tous les autres périphériques seront créés dans la prochaine section.

touch /etc/ld.so.conf Une des étapes finales de l'installation de Glibc est d'exécuter ldconfig afin de mettre à jour le cache du chargeur dynamique. Si le fichier n'existe pas, l'installation échouera retournant que le fichier ne peut être lu, donc nous avons simplement créé un fichier vide (avec ce fichier vide, Glibc utilisera par défaut /lib et usr/lib, ce qui est satisfaisant).

sed 's%\$(PERL)%/usr/bin/perl%' malloc/Makefile > tmp~: Cette commande sed cherche dans malloc/Makefile et convertit toutes les occurences de $(PERL) en /usr/bin/perl. Le résultat est alors écrit dans le fichier tmp~. Ceci parce que Glibc ne peut pas détecter perl puisqu'il na pas encore été installé.

mv tmp~ malloc/Makefile: Le fichier tmp~ est maintenant retourné vers malloc/Makefile. Nous faisons cela car lorsque sed est utilisé, nous ne pouvons pas écrire directement dans ce fichier, nous devons donc utiliser un fichier temporaire.

sed 's/root/0' login/Makefile > tmp~: Cette commande sed replace toutes les occurences de root dans login/Makefile avec 0. Comme nous n'avons pas encore Glibc sur le système LFS, les noms d'utilisateurs ne peuvent pas être résolus avec les id des utilisateurs. Pour cette raison nous replaçons le nom d'utilisateur root avec l'id 0.

mv tmp~ login/Makefile: Comme précédemment, nous utilisons un fichier temporaire (tmp~) pour stocker le Makefile édité et le recopier par-dessus l'original.

--enable-add-ons: Permet l'utilisation des linuxthreads que nous installons avec Glibc.

--libexecdir=/usr/bin: Cela force l'installation du programme pt_chown dans /usr/bin directory.

sed 's/cross-compiling = yes/cross-compiling = no/' config.make > config.make~: Cette fois nous remplaçons cross-compiling = yes par cross-compiling = no. Nous faisons cela parce que nous construisons pour notre propre système. Cross-compiling est utilisé, par exemple, pour construire un package pour un Apple Power PC sur un système Intel. La raison pour laquelle Glibc pense que nous compilons au travers de système est qu'il ne peut pas compiler un programme test qui le détermine, il se positionne donc automatiquement par défaut comme une compiliation au travers de systèmes. La raison pour laquelle le programme à échoué est que Gblic n'a pas encore été installé.

mv config.make~ config.make: Une fois de plus nous déplaçons le fichier temporaire pour écraser l'original.

exec /bin/bash: Cette commande va démarrer un nouveau shell bash qui va remplacer l'actuel. Cela suprime le message "I have no name!" de l'invite de commande qui est dû à l'incapacité de bash à faire correspondre un id utilisateur avec un nom utilisateur (qui est dû au fait que Glibc n'est pas installé).

Contenu

Le package Glibc contient la bibliothèque GNU C.

Description

La bibliothèque C est une collection des fonctions les plus couramment utilisées en programmation. Cela évite au développeur d'écrire ses propres fonctions pour toutes sortes de tâches. Les plus communes telles que l'affichage d'une chaîne de caractères à l'écran sont déjà présentes et à disposition du programmeur.

La bibliothèque C (comme presque toutes les bibliothèques) est disponible en deux versions : dynamique et statique. En résumé lorsqu'un programme utilise une bibliothèque C statique, le code de cette bibliothèque est copié dans l'exécutable. Lorsqu'un programme utilise une bibliothèque dynamique, cet exécutable ne contient pas le code de la bibliothèque, mais une routine qui charge la fonction de la bibliothèque au moment où le programme l'utilise. Cela réduit d'une façon significative la taille du programme. La documentation fourni avec la bibliothèque C décrit ce mécanisme plus en détails, il est trop compliqué de l'expliquer ici en une ou deux lignes.

Dépendances

Glibc-2.2.4 nécessite l'installation de :


sh du package bash

ar du package binutils
as du package binutils
ld du package binutils
ranlib du package binutils 

cmp du package diffutils

chmod du package fileutils
cp du package fileutils
ln du package fileutils
mknod du package fileutils
mv du package fileutils
mkdir du package fileutils
rm du package fileutils
touch du package fileutils

cpp du package gcc
gcc du package gcc

egrep du package grep
grep du package grep

gzip du package gzip

make du package make

mawk du package mawk

sed du package sed

basename du package sh-utils
expr du package sh-utils
pwd du package sh-utils
uname du package sh-utils

cat du package textutils
sort du package textutils
tr du package textutils