5.3. Binutils-2.15.94.0.2.2 - Passo 1

Il pacchetto Binutils contiene un linker, un assemblatore e altri tool per manipolare file oggetto.

Tempo approssimativo di costruzione: 1.0 SBU
Spazio su disco richiesto: 179 MB
L'installazione dipende da: Bash, Bison, Coreutils, Diffutils, Flex, GCC, Gettext, Glibc, Grep, M4, Make, Perl, Sed e Texinfo

5.3.1. Installazione di Binutils

È importante che Binutils sia il primo pacchetto compilato, poiché sia Glibc che GCC eseguono diversi test sul linker e l'assemblatore disponibili per determinare quale delle loro caratteristiche abilitare.

Questo pacchetto è noto per avere problemi quando i suoi flag di ottimizzazione (incluse le opzioni -march e -mcpu) vengono cambiati. Se è stata definita una qualunque delle variabili ambiente che si sovrappone alle ottimizzazioni di default, come CFLAGS e CXXFLAGS, disallocarle quando si costruisce Binutils.

Se si sta costruendo da un host su cui è in funzione Gcc-4 o successivo, è necessario applicare una patch alla prima costruzione di questa versione di Binutils in modo che possa essere compilata dal sistema host.

patch -Np1 -i ../binutils-2.15.94.0.2.2-gcc4-1.patch

La documentazione di Binutils raccomanda di costruire Binutils al di fuori della directory dei sorgenti, in una directory di costruzione dedicata:

mkdir -v ../binutils-build
cd ../binutils-build
[Nota]

Nota

Perché i valori di SBU elencati nel resto del libro siano di qualche utilità, misurare il tempo occorrente a costruire questo pacchetto dalla configurazione, fino a e inclusa la prima installazione. Per ottenere questo facilmente, racchiudere tre comandi in un comando time in questo modo: time { ./configure ... && make && make install; }.

Preparare Binutils per la compilazione:

../binutils-2.15.94.0.2.2/configure --prefix=/tools --disable-nls

Significato delle opzioni di configurazione:

--prefix=/tools

Questo dice allo script di configurazione di prepararsi a installare i programmi delle Binutils nella directory /tools.

--disable-nls

Questo disabilita l'internazionalizzazione, poiché i18n non è necessario per i tool temporanei.

Continuare con la compilazione del pacchetto:

make

La compilazione è ora completa. Normalmente ora eseguiremmo la suite di test, ma in questa fase preliminare il framework della suite di test (Tcl, Expect e DejaGNU) non è ancora al suo posto. I benefici derivanti da un'esecuzione dei test a questo punto sono minimi, poiché i programmi di questo primo passo verranno presto rimpiazzati da quelli del secondo.

Installare il pacchetto:

make install

Quindi preparare il linker per la successiva fase di “Aggiustamento”:

make -C ld clean
make -C ld LIB_PATH=/tools/lib

Significato dei parametri di make:

-C ld clean

Questo dice al programma make di rimuovere tutti i file compilati nella sottodirectory ld.

-C ld LIB_PATH=/tools/lib

Questa opzione ricostruisce ogni cosa nella sottodirectory ld. Specificare la variabile del Makefile LIB_PATH nella linea di comando ci permette di sovrascrivere il valore di default e puntarlo alla locazione temporanea dei tool. Il valore di questa variabile specifica il percorso di ricerca di default della librerie da parte del linker. Questa preparazione viena usata più avanti nel capitolo.

[Avvertimento]

Avvertimento

Non rimuovere ancora le directory di costruzione e dei sorgenti delle Binutils. Esse saranno di nuovo necessarie nel loro stato attuale più avanti in questo capitolo.

Dettagli su questo pacchetto si trovano nella Sezione 6.13.2, “Contenuti di Binutils.”