10.25. Binutils-2.28

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

10.25.1. Installation de Binutils

Vérifiez que les pseudo-terminaux (PTY) fonctionnent correctement dans l'environnement chroot. Vérifiez que tout est bien configuré en effectuant un simple test :

expect -c "spawn ls"

Cette commande devrait donner la sortie suivante :

spawn ls

Si, à la place, elle donne un message disant qu'il faut créer plus de ptys, alors l'environnement n'est pas bien paramétré pour l'opération PTY. Ce problème doit être résolu avant de lancer les suites de tests pour Binutils et GCC.

La documentation de Binutils recommande de construire Binutils à l'extérieur du répertoire des sources dans un répertoire dédié :

mkdir -v ../binutils-build
cd ../binutils-build

Préparez la compilation de Binutils :

CC="gcc -isystem /usr/include ${BUILD64}" \
LDFLAGS="-Wl,-rpath-link,/usr/lib64:/lib64:/usr/lib:/lib ${BUILD64}" \
../binutils-2.28/configure \
    --prefix=/usr \
    --enable-shared \
    --enable-64-bit-bfd \
    --libdir=/usr/lib64 \
    --enable-gold=yes \
    --enable-plugins \
    --with-system-zlib \
    --enable-threads

Compilez le paquet :

make tooldir=/usr

Voici la signification du paramètre de make :

tooldir=/usr

Normalement, le répertoire tooldir (celui où seront placés les exécutables) est configuré avec $(exec_prefix)/$(target_alias). Comme il s'agit d'un système personnalisé, nous n'avons pas besoin d'un répertoire spécifique à notre cible dans /usr.

[Important]

Important

En raison du rôle critique que joue Binutils dans un système fonctionnel, les développeurs de CLFS recommandent fortement de lancer la suite de tests.

Testez les résultats :

make check

Installez le paquet :

make tooldir=/usr install

10.25.2. Contenu de Binutils

Programmes installés: addr2line, ar, as, c++filt, elfedit, gprof, ld, ld.bfd, ld.gold, nm, objcopy, objdump, ranlib, readelf, size, strings, strip
Bibliothèques installées: libbfd.[a,so], libopcodes.[a,so]
Répertoire installé: /usr/lib/ldscripts

Descriptions courtes

addr2line

Traduit les adresses de programme en noms de fichier et numéros de ligne ; suivant une adresse et le nom d'un exécutable, il utilise les informations de débogage disponibles dans l'exécutable pour déterminer le fichier source et le numéro de ligne associé à cette adresse

ar

Crée, modifie et extrait des archives

as

Un assembleur qui assemble la sortie de gcc en des fichiers objets

c++filt

Utilisé par l'éditeur de liens pour récupérer les symboles C++ et Java, et pour empêcher les fonctions surchargées d'arrêter brutalement le programme

elfedit

Met à jour les en-tête ELF des fichiers ELF

gprof

Affiche les données de profilage d'appels dans un graphe

ld

Un éditeur de liens combinant un certain nombre d'objets et de fichiers archives en un seul fichier, en déplaçant leur données et en regroupant les références de symboles

ld.bfd

Lien en dur vers ld

ld.gold

Un éditeur de liens conçu pour être plus rapide que ld, particulièrement pour les grosses applications C++.

nm

Liste les symboles disponibles dans un fichier objet

objcopy

Traduit un type de fichier objet en un autre

objdump

Affiche des informations sur le fichier objet donné, les options contrôlant les informations à afficher ; l'information affichée est surtout utile aux programmeurs qui travaillent sur les outils de compilation

ranlib

Génère un index du contenu d'une archive et le stocke dans l'archive ; l'index liste tous les symboles définis par les membres de l'archive qui sont des fichiers objet déplaçables

readelf

Affiche des informations sur les binaires du type ELF

size

Liste les tailles des sections et la taille totale pour les fichiers objets donnés

strings

Affiche, pour chaque fichier donné, la séquence de caractères affichables qui sont d'au moins la taille spécifiée (par défaut, 4) ; pour les fichiers objets, il affiche, par défaut, seulement les chaînes des sections d'initialisation et de chargement alors que pour les autres types de fichiers, il parcourt le fichier entier

strip

Supprime les symboles des fichiers objets

libbfd

Bibliothèque des descripteurs de fichiers binaires (Binary File Descriptor)

libopcodes

Une bibliothèque de gestion des opcodes — la « version lisible » des instructions du processeur ; elle est utilisée pour construire des outils comme objdump.