Le paquet Binutils contient un éditeur de liens, un assembleur et d'autres outils pour gérer des fichiers objets.
Ce paquet est connu pour avoir des soucis quand les options d'optimisation
par défaut (en incluant les options -march
et
-mcpu
) sont modifiées. Donc, si des variables d'environnement
qui surchargent les optimisations par défaut, telles que CFLAGS
et CXXFLAGS
, ont été définies, supprimez cette initialisation
pour la construction 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 test simple :
expect -c "spawn ls"
Si le message suivant apparaît, l'environnement chroot n'est pas configuré correctement pour des opérations sur les PTY :
The system has no more ptys.
Ask your system administrator to create more.
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 ../binutils-build cd ../binutils-build
Préparez la compilation de Binutils :
../binutils-2.15.94.0.2.2/configure --prefix=/usr \ --enable-shared
Compilez le paquet :
make tooldir=/usr
Normalement, le répertoire tooldir (celui où seront placés les
exécutables) est configuré avec $(exec_prefix)/$(target_alias)
. Par exemple, les
machines i686 l'étendront en /usr/i686-pc-linux-gnu
. Comme il s'agit d'un
système personnalisé, nous n'avons pas besoin d'un répertoire spécifique à notre
cible dans /usr
. $(exec_prefix)/$(target_alias)
serait utilisée si
le système avait pour but une cross-compilation (par exemple, compiler un paquet
sur une machine Intel qui génère du code pouvant être exécuté sur des machines
PowerPC).
La suite de tests de Binutils dans cette section est considérée comme critique. Ne pas la laissez passer, quelqu'en soit la raison.
Testez les résultats :
make check
Installez le paquet :
make tooldir=/usr install
Installez le fichier d'en-tête libiberty
, requis par certains paquets :
cp ../binutils-2.15.94.0.2.2/include/libiberty.h /usr/include