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 -v ../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 -v ../binutils-2.15.94.0.2.2/include/libiberty.h /usr/include