Installer Binutils-2.12

Estimation du temps de construction:           6 minutes
Estimation de l'espace disque requis:  96 MB

Installation de Binutils

Ce package est connu pour son mauvais fonctionnement si vous changez les options d'optimisation qui sont définies par défaut (y compris -march and -mcpu). Binutils fonctionne bien mieux tel quel. Donc, si vous avez défini des variables d'environnement qui écrasent les optimisations par défaut, comme CFLAGS et CXXFLAGS, nous vous recommendons de les annuler ou de les modifier lors de la construction de Binutils. Vous avez été prévenu.

Installer Binutils en exécutant les commandes suivantes :

mkdir ../binutils-build &&
cd ../binutils-build &&
../binutils-2.12/configure --prefix=$LFS/usr --disable-nls &&
make tooldir=$LFS/usr LDFLAGS=-all-static &&
make tooldir=$LFS/usr install

Explication de la commande

mkdir ../binutils-build: Les instructions d'installation pour Binutils recommende la création d'un répertoire de construction séparé plutôt que de compiler ce package dans le répertoire des sources. Donc, nous créons un répertoire binutils-build et travaillons dans ce répertoire.

--disable-nls: Cette option désactive l'internationalisation (aussi connue comme i18n). Nous n'avons pas besoin de cela pour nos programmes statiques et NLS cause souvent quelques problèmes lors de l'édition de liens statiques.

LDFLAGS=-all-static: Mettre la variable LDFLAGS à la valeur -all-static permet à Binutils d'être lié statiquement.

tooldir=$LFS/usr: Normalement, tooldir (le répertoire où les exécutables de binutils vont se situer) est $(exec_prefix)/$(target_alias) ce qui donne, par exemple, /usr/i686-pc-linux-gnu. Depuis que nous avons construit notre propre système, nous n'avons pas eu besoin de positionner cette option au répertoire $LFS/usr. Cette option ne devrait être utilisée que pour une plateforme de compilation croisée (par exemple compiler un package sur une machine Intel qui génère un code exécutable sur des PowerPC).

Contenu de Binutils-2.11.2

Programmes

addr2line, ar, as, c++filt, gasp, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings et strip

Descriptions

addr2line

addr2line traduit les adresses d'un programme en nom de fichiers et numéros de ligne. A partir d'une adresse et d'un exécutable, il utilise les informations de déboguage présentes dans l'exécutable pour trouver quel nom de fichier et quel numéro de ligne sont associés à une adresse donnée.

ar

Le programme ar crée, modifie et extrait des données depuis des archives. Une archive est un fichier contenant un ensemble d'autres fichiers dans une structure qui permet de retrouver les fichiers individuels d'origine (appelés membres de l'archive).

as

as a d'abord été prévu pour assembler la sortie du compilateur GNU C gcc, pour qu'elle puisse être utilisée par l'éditeur de liens ld.

c++filt

Le langage C++ fournit un mécanisme de surcharge, ce qui signifie qu'il est possible d'écrire plusieurs fonctions ayant le même nom (pourvu que chacune demande des paramètres de types différents). Tous les noms de fonction C++ sont encodés dans un nom d'assemblage de bas niveau (ce processus est connu sous le nom de broyage). Le programme c++filt fait l'association inverse : il décode (dé-broie) les noms de bas niveau en noms de niveau utilisateur, pour que l'éditeur de liens puisse prévenir un conflit entre ces fonctions surchargées.

gasp

Gasp est le préprocesseur de macros assembleur.

gprof

gprof affiche les données de profil sous forme de graphe d'appel.

ld

ld combine plusieurs fichiers objets et archives, modifie l'emplacement de leurs données et lie les références des symboles. Souvent, la dernière étape dans la construction d'un nouveau programme compilé à exécuter est un appel à ld.

nm

nm liste les symboles des fichiers objet.

objcopy

L'utilitaire objcopy copie le contenu d'un fichier objet dans un autre. objcopy utilise la bibliothèque GNU BFD pour lire et écrire les fichiers objet. Il peut écrire le fichier objet destination dans un format différent de celui du fichier objet source.

objdump

objdump affiche des informations sur un ou plusieurs fichiers objet. Les options déterminent quelles informations spécifiques sont à afficher. Ces informations sont essentiellement utiles pour les programmeurs qui travaillent sur des outils de compilation, à l'inverse des programmeurs qui veulent juste compiler leur programme pour qu'il fonctionne.

ranlib

ranlib génère un index du contenu d'une archive, et le stocke dans l'archive. L'index liste chaque symbole défini par un membre d'une archive, qui est un fichier objet re-localisable.

readelf

readelf affiche des informations sur les binaires de type elf.

size

size liste les tailles des sections, et la taille totale, pour chaque fichier objet objfile de sa liste d'arguments. Par défaut, une ligne est générée en sortie pour chaque fichier objet ou chaque module dans une archive.

strings

Pour chaque fichier donné, strings affiche les séquences de caractères imprimables qui ont au moins une longueur de quatre caractères (ou le nombre spécifié en option du programme) et qui sont suivies d'un caractère non imprimable. Par défaut, il affiche seulement les chaînes des parties initialisées et chargées des fichiers objet; pour les autres types de fichier, il affiche les chaînes de tout le fichier.

strings est principalement utile pour déterminer le contenu des fichiers binaires.

strip

strip débarasse les fichiers objet de tous leurs symboles, ou de certains en particuliers. La liste des fichiers objet peut inclure des archives. Au moins un fichier objet doit être fourni. strip modifie les fichiers fournis en argument, plutôt que d'écrire les copies modifiées sous d'autres noms..

Fichiers de Librairies

libbfd.a, libiberty.a et libopcodes.a

Descriptions

libbfd

libbfd est une librairie de description des fichiers binaires.

libiberty

libiberty est un ensemble de sous-routines utilisé dans de divers programmes GNU dont getopt, obstack, strerror, strtol et strtoul.

libopcodes

libopcodes est une bibliothèque native pour traiter les opcodes et est utilisé dans le but de construire des utilitaires comme ojbdump. Les opcodes correspondent à une version texte facilement lisible d'instructions processeurs.

Dépendances

Binutils-2.11.2 nécessite que les programmes suivants soient installés:


autoconf: autoconf, autoheader
automake: aclocal, automake
bash: sh
binutils: ar, as, ld, nm, ranlib, strip
diffutils: cmp
fileutils: chmod, cp, ln, ls, mkdir, mv, rm, rmdir, touch
flex: flex
gcc: cc, cc1, collect2, cpp0, gcc
glibc: ldconfig
grep: egrep, fgrep, grep
m4: m4
make: make
gawk: gawk
sed: sed
sh-utils: basename, echo, expr, hostname, sleep, true, uname
texinfo: install-info, makeinfo
textutils: cat, sort, tr, uniq