Estimation du temps de construction : 1,0 SBU Estimation de l'espace disque requis : 194 Mo |
Binutils est une collection d'outils de développement de logiciels contenant un éditeur de liens, un assembleur et d'autres outils pour travailler avec des fichiers objet et des archives.
Programmes installés : addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings et strip
Bibliothèques installés : libiberty.a, libbfd.[a,so] et libopcodes.[a,so]
Binutils dépend de Bash, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo.
Il est important que Binutils soit le premier package à ê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.
Note : Même si Binutils est un package important de l'ensemble des outils, nous n'allons pas lancer la suite de tests aussi tôt. Tout d'abord, les éléments de la suite de tests ne sont pas encore en place. Ensuite, les programmes de la première passe seront bientôt écrasés par ceux de la seconde passe.
Ce package 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 pas 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 : 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 package. Pour cela, vous pouvez faire quelque chose comme ça : time { ./configure ... && ... && ... && make install; }.
Maintenant, préparez la compilation de Binutils :
../binutils-2.14/configure \ --prefix=/tools --disable-nls |
La signification des options de configure est :
--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 et nls cause souvent des problèmes lors d'une édition des liens en statique.
Continuez avec la compilation du package :
make configure-host make LDFLAGS="-all-static" |
La signification des paramètres de make est :
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.
Enfin, installez le package :
make install |
Maintenant, préparez l'éditeur de liens pour le "verrouillage" de Glibc un peu plus tard :
make -C ld clean make -C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib |
La signification des paramètres de make est :
-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.
Avertissement |
Ne supprimez pas encore les répertoires de construction et des sources dont nous aurons encore besoin dans leur état actuel un peu plus tard dans ce chapitre. |
Précédent | Sommaire | Suivant |
Configurer l'environnement | Niveau supérieur | Installer GCC-3.3.1 - Pass 1 |