Binutils-2.14 - Passe 1

Le paquet Binutils contient un éditeur de liens, un assembleur et d'autres outils pour gérer des fichiers objets.

Temps de construction approximatif :  1,0 SBU
Espace disque requis :                170 Mo

L'installation de Binutils dépend de Bash, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo.

Installation de Binutils

Il est important que Binutils soit le premier paquet à être 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 mal se comporter si vous changez les options d'optimisation par défaut (en incluant les options -march et -mcpu). Donc, si vous avez défini des variables d'environnement qui surchargent les optimisations par défaut, telles que CFLAGS et CXXFLAGS, nous vous recommandons de supprimer cette initialisation lors de 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
[Note]

Note

Si vous voulez que les valeurs SBU listées dans le reste du livre vous soient utiles, vous devez mesurer le temps pris pour construire ce paquet, de la configuration jusqu'à la première installation. Pour cela, vous pouvez englober les quatres commandes dans une commande time de cette façon : time { ./configure ... && ... && ... && make install; }.

Maintenant, préparez la compilation de Binutils :

../binutils-2.14/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 (un mot généralement abrégé en i18n). Nous n'en avons pas besoin pour nos programmes statiques. De plus, nls cause souvent des problèmes lors d'une édition des liens en statique.

Continuez avec la compilation du paquet :

make configure-host
make LDFLAGS="-all-static"

Voici la signification des paramètres de make :

  • configure-host : ceci force tous les sous-répertoires à être immédiatement configurés. Une construction statique échouera sans ça. Nous utilisons donc cette option pour contourner le problème.

  • LDFLAGS="-all-static" : ceci indique à l'éditeur de liens que tous les programmes Binutils devraient être liés statiquement. Néanmoins, en étant strict, "-all-static" est tout d'abord passé au programme libtool qui passe ensuite "-static" à l'éditeur de liens.

La compilation est terminée. Normalement, nous devrions lancer la suite de tests mais, à ce moment, l'ensemble de travail de la suite de tests (Tcl, Expect and DejaGnu) n'est pas encore en place. Et il y aurait de toute façon peu d'intérêt à lancer les tests car les programmes de la première passe seront bientôt remplacés par ceux de la seconde.

Maintenant, installez le paquet :

make install

Préparez l'éditeur de liens pour la phase d'« ajustement » un peu plus tard :

make -C ld clean
make -C ld LDFLAGS="-all-static" 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 mais seulement dans le 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 makefile 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. Vous verrez comment cette préparation est ensuite utilisée dans le chapitre.

[Warning]

Warning

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 ».