8.18. Binutils-2.41

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

Temps de construction approximatif: 2,2 SBU
Espace disque requis: 2,7 Go

8.18.1. Installation de Binutils

La documentation de Binutils recommande de construire Binutils dans un répertoire de construction dédié :

mkdir -v build
cd       build

Préparez la compilation de Binutils :

../configure --prefix=/usr       \
             --sysconfdir=/etc   \
             --enable-gold       \
             --enable-ld=default \
             --enable-plugins    \
             --enable-shared     \
             --disable-werror    \
             --enable-64-bit-bfd \
             --with-system-zlib

Signification des paramètres de configure :

--enable-gold

Construit l'éditeur de liens gold et l'installe sous le nom de ld.gold (en addition à l'éditeur de liens par défaut).

--enable-ld=default

Construit l'éditeur de liens bfd original et l'installe à la fois en tant que ld (l'éditeur par défaut) et ld.bfd.

--enable-plugins

Permet la prise en charge des plugins pour l'éditeur de lien.

--enable-64-bit-bfd

Permet la prise en charge 64 bits (sur les systèmes avec une taille de mot inférieure). Ce paramètre n'est pas forcément nécessaire sur les systèmes 64 bits, mais sa présence ne changera rien.

--with-system-zlib

Utilise la version déjà installée de la bibliothèque zlib au lieu de construire la version inclue.

Compilez le paquet :

make tooldir=/usr

Signification des paramètres de configure :

tooldir=/usr

Normalement, le nom du répertoire tooldir (où seront situés les exécutables) est configuré de cette manière : $(exec_prefix)/$(target_alias).Les machines x86_64 y ajouteront /usr/x86_64-pc-linux-gnu. Comme il s'agit d'un système personnalisé, il n'est pas nécessaire d'avoir un répertoire spécifique à la cible dans /usr. Si le système était utilisé pour la compilation croisée (par exemple pour compiler un paquet sur une machine Intel qui génère du code pouvant être exécuté sur des machines PowerPC), le répertoire s’appellerait $(exec_prefix)/$(target_alias).

[Important]

Important

La suite de tests de Binutils est indispensable.Ne l’oubliez sous aucun prétexte.

Testez les résultats :

make -k check

Pour afficher la liste des tests qui ont échoué, exécutez :

grep '^FAIL:' $(find -name '*.log')

Douze tests échouent dans la suite de tests gold lorsque les options >--enable-default-pie et --enable-default-ssp sont passées à GCC.

Trois tests dans la suite gprofng sont également connus pour échouer.

Installez le paquet :

make tooldir=/usr install

Supprimez les bibliothèques statiques inutiles :

rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a

8.18.2. Contenu de Binutils

Programmes installés: addr2line, ar, as, c++filt, dwp, elfedit, gprof, gprofng, ld, ld.bfd, ld.gold, nm, objcopy, objdump, ranlib, readelf, size, strings, et strip
Bibliothèques installées: libbfd.so, libctf.so, libctf-nobfd.so, libgprofng.so, libopcodes.so et libsframe.so
Répertoire installé: /usr/lib/ldscripts

Descriptions courtes

addr2line

Traduit les adresses de programmes en noms de fichier et numéros de ligne ; en fonction de l’adresse et du nom de l’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és à cette adresse

ar

Crée, modifie et extrait des archives

as

Assemble la sortie de la commande gcc en fichiers objet

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'entrer en conflit

dwp

L'utilitaire d'empaquetage DWARF

elfedit

Met à jour l'en-tête ELF des fichiers ELF

gprof

Affiche les données de profil du graphe d'appel

gprofng

Récupère et analyse les données de performance

ld

Un éditeur de liens qui combine un certain nombre d'objets et de fichiers d’archive en un seul fichier, en déplaçant leurs données et en regroupant les références des symboles

ld.gold

Une version réduite de ld qui ne prend en charge que le format de fichier objet ELF

ld.bfd

Lien physique vers ld

nm

Liste les symboles présents dans un fichier objet donné

objcopy

Traduit un type de fichier objet en un autre

objdump

Affiche les informations concernant un fichier objet donné, avec des options permettant de contrôler les données à afficher. Ces données sont surtout utiles 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 de type ELF

size

Liste la taille de la section et la taille totale des fichiers objet donnés

strings

Affiche pour chaque fichier donné la séquence de caractères imprimables qui sont d'au moins la taille spécifiée (quatre par défaut). Pour les fichiers objet, cette commande affiche par défaut uniquement les chaînes des sections d'initialisation et de chargement, et parcourt le fichier entier pour les autres types de fichiers

strip

Supprime les symboles des fichiers objet

libbfd

Bibliothèque Binary File Descriptor

libctf

Bibliothèque de prise en charge du débogage du format compatible ANSI C

libctf-nobfd

Une variante de libctf qui n'utilise pas la fonctionnalité libbfd

libgprofng

Une bibliothèque contenant la plupart des routines utilisées par gprofng

libopcodes

Une bibliothèque de gestion des codes opération, la « version lisible » des instructions du processeur. Elle est utilisée pour construire des utilitaires comme objdump

libsframe

Une bibliothèque pour prendre en charge le bactracking en ligne avec un simple dérouleur