Le paquet Binutils contient un éditeur de liens, un assembleur et d'autres outils pour gérer des fichiers objets.
Il est important que Binutils soit le premier paquet compilé parce que à la fois Glibc et GCC réalisent différents tests sur l'éditeur de liens et l'assembleur disponibles pour déterminer leur propres fonctionnalités à activer.
Ce paquet est connu pour avoir des soucis quand les options d'optimisation
par défaut (en incluant les options -march
et
-mcpu
) sont modifiées. Donc, si des variables d'environnement
qui surchargent les optimisations par défaut, telles que CFLAGS
et CXXFLAGS
, ont été définies, supprimez cette initialisation
pour la construction de Binutils.
La documentation de Binutils recommande de construire Binutils en dehors du répertoire des sources, c'est-à-dire dans un répertoire de construction dédié :
mkdir ../binutils-build cd ../binutils-build
Pour que les valeurs SBU listées dans le reste du livre vous soient
utiles, mesurez le temps pris pour construire ce paquet, de la configuration
jusqu'à la première installation. Pour cela, englobez les trois commandes
dans une commande time de cette façon :
time { ./configure ... && make && make
install; }
.
Maintenant, préparez la compilation de Binutils :
../binutils-2.15.94.0.2.2/configure --prefix=/tools --disable-nls
Voici la signification des options de configure :
--prefix=/tools
Ceci indique au script configure de se préparer à installer les
programmes Binutils dans le répertoire /tools
.
--disable-nls
Ceci désactive l'internationalisation car ce n'est pas nécessaire pour des outils temporaires.
Continuez avec la compilation du paquet :
make
La compilation est maintenant terminée. Normalement, la suite de tests devrait être lancé mais, à ce moment, l'ensemble de travail de la suite de tests (Tcl, Expect et DejaGnu) n'est pas encore en place. Les bénéfices à lancer les tests maintenant seraient minimes car les programmes de la première passe seront bientôt remplacés par ceux de la seconde.
Installez le paquet :
make install
Ensuite, préparez l'éditeur de liens pour la phase d'« ajustement » un peu plus tard :
make -C ld clean make -C ld LIB_PATH=/tools/lib
Voici la signification des paramètres de make :
-C ld clean
: Ceci indique au
programme make de supprimer tous les fichiers compilés du
sous-répertoire ld
.
-C ld LIB_PATH=/tools/lib
:
Cette option reconstruit tout ce qui se trouve dans le sous-répertoire
ld
. Spécifier la variable makefile
the LIB_PATH
en ligne de commande nous autorise à écraser la valeur par défaut et à
la faire pointer vers notre emplacement temporaire des outils. La valeur de
cette variable spécifie le chemin de recherche des bibliothèques par défaut pour
l'éditeur de liens. Cette préparation est utilisée plus tard dans le chapitre.
-C ld clean
Ceci indique au programme make de supprimer tous les fichiers
compilés du sous-répertoire ld
.
-C ld LDFLAGS="-all-static"
LIB_PATH=/tools/lib
Cette option reconstruit tout ce qui se trouve dans le
sous-répertoire ld
. Spécifier la
variable LIB_PATH
en ligne de commande du makefile nous
autorise à écraser la valeur par défaut et à la faire pointer vers notre
emplacement temporaire des outils. La valeur de cette variable spécifie le
chemin de recherche des bibliothèques par défaut pour l'éditeur de liens.
Cette préparation est utilisée plus tard dans le chapitre.
Ne supprimez pas encore les répertoires de construction et des sources dont vous aurez encore besoin dans leur état actuel un peu plus tard dans ce chapitre.
Les détails sur ce paquet sont disponibles dans la section intitulée « Contenu de Binutils »