Installer Binutils

Installation de Binutils

Installez Binutils en exécutant les commandes suivantes :


./configure --prefix=$LFS/usr --disable-nls &&
make -e LDFLAGS=-all-static tooldir=$LFS/usr &&
make -e tooldir=$LFS/usr install

Explication des commandes

make -e: Le paramètre -e indique à make que les variables d'environnement ont priorité sur les variables définies dans le(s) fichier(s) Makefile. Ceci est nécessaire pour pouvoir faire avec succès l'édition de liens statique de binutils.

LDFLAGS=-all-static: Positionner la variable LDFLAGS à la valeur -all-static impose l'édition de liens statique de binutils.

tooldir=$LFS/usr: Normalement, le répertoire tooldir (le répertoire où se retrouvent les exécutables de binutils) est positionné à $(exec_prefix)/$(target_alias) ce qui vaut, par exemple /usr/i686-pc-linux-gnu. Étant donné que nous ne créons ces exécutables que pour notre système, nous n'avons pas besoin de ce répertoire spécifique à une cible dans $LFS/usr. Vous utiliseriez cette option si vous utilisiez votre système pour des compilations croisées (par exemple, vous compileriez un paquetage sur votre machine Intel qui générerait du code exécutable sur une machine Apple PowerPC)

Contenu

Le paquet Binutils contient les programmes ld, as, ar, nm, objcopy, objdump, ranlib, size, strings, strip, c++filt, addr2line et nlmconv.

Description

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.

as

as a d'abord été prévu pour assembler la sortie du compilateur GNU C gcc, pour pouvoir être utilisée par le lieur ld.

ar

Le programme ar crée, modifie et extrait des données depuis des archives. Une archive est un simple 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).

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 dans 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 que leur programme compile et fonctionne.

ranlib

ranlib génère un index sur le 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.

size

size liste les tailles des sections -- et la taille totale -- de chaque fichier objet objfile dans sa liste d'arguments. Par défaut, une ligne est générée en sortie pour chaque fichier objet ou chaque module dans l'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 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 d'autres types de fichier, il affiche les chaînes de tout le fichier.

strings est essentiellement utilisé pour déterminer le contenu des fichiers non-texte.

strip

strip débarrasse les fichiers objet de tous les 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.

c++filt

Le langage C++ fournit un mécanisme de surcharge, ce qui signifie que vous pouvez écrire plusieurs fonctions ayant le même nom (pourvu que chacune réclame 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 le lieur puisse prévenir un conflit entre ces fonctions surchargées.

addr2line

addr2line traduit les adresses d'un programme en noms de fichier 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.

nlmconv

nlmconv convertit des fichiers objet re-localisables en fichiers de Module Installables NetWare, pouvant aussi lire les fichiers d'entête pour les informations d'entête NLM.