Rifiniture Definitive
Molti programmi e librerie sono compilati, per default, con i simboli di debug inclusi (con il parametro di gcc -g). Questo significa che, facendo il debug di un programma o libreria compilato con le informazioni di debug incluse, il debugger può dare non solo indirizzi di memoria, ma anche nomi di routine e variabili.
L'inclusione di questi simboli di debug, tuttavia, aumenta significativamente le dimensioni di un programma o libreria. Per avere un'idea dell'ammontare di spazio occupato da questi simboli si dia un'occhiata ai dati seguenti:
Le dimensioni possono in qualche modo variare in funzione di quale compilatore è stato usato e quale libreria C, ma quando si confrontano programmi con e senza i simboli di debug la differenza di solito sarà di un fattore tra 2 e 5.
Dal momento che la maggior parte delle persone probabilmente non userà mai un debugger col proprio software di sistema, è possibile guadagnare un sacco di spazio disco rimuovendo questi simboli.
Informazioni su altri modi di ottimizzare il proprio sistema si possono trovare su optimization.txt.
Se non si è programmatori e non si intende fare nessun debugging sul proprio software di sistema, è possibile ridurne l'ingombro di circa 90 MB rimuovendo i simboli di debug dai binari e dalle librerie. Questo non causa alcun inconveniente, tranne il non avere più alcuna possibilità di fare un debug completo del software.
Molte persone che usano il comando mostrato di seguito non hanno alcun problema. È facile, tuttavia, fare un errore di digitazione e rendere il proprio sistema inutilizzabile, così prima di eseguire il comando strip è probabilmente una buona idea fare un backup del sistema LFS nella situazione corrente.
Strip o compattazione
Prima di eseguire la compattazione, è necessario porre particolare attenzione ad assicurare che non siano in esecuzione nessuno dei binari che stanno per essere compattati. Se non si è certi di essere entrati in chroot con il comando indicato all'inizio della Sezione n.6 (Accesso all'ambiente chroot), uscire prima da chroot e rientrarvi con i comandi:
logout chroot $LFS /tools/bin/env -i \ HOME=/root TERM=$TERM PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ /tools/bin/bash --login
Ora è possibile compattare in sicurezza binari e librerie:
/tools/bin/find /{,usr/}{bin,lib,sbin} -type f \ -exec /tools/bin/strip --strip-debug '{}' ';'
Il sistema segnalerà che non riconosce il formato di un grande numero di file. Questi avvisi possono essere tranquillamente ignorati. Questi avvisi significano solo che questi file sono script invece che binari.
Modifica per accesso in chroot
Se i file system virtuali del kernel sono stati smontati, sia manualmente sia con un reboot, assicurarsi che siano ri-montati quando si entra di nuovo nel chroot. Questo processo è stato inizialmente illustrato in File System Virtuali, ed è sintetizzato nei comandi:
mount -v --bind /dev $LFS/dev mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620 mount -vt proc proc $LFS/proc mount -vt sysfs sysfs $LFS/sys
D'ora in avanti quando si rientrerà nell'ambiente chroot dopo essere usciti, usare il seguente comando chroot modificato:
chroot "$LFS" /usr/bin/env -i \ HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ /bin/bash --login
La ragione per questo è che i programmi presenti in /tools non sono più necessari. Perciò si può anche cancellare la directory /tools se lo si desidera.
La rimozione di /tools rimuoverà anche le copie temporanee di Tcl, Expect e DejaGNU, che sono state usate per eseguire i test della toolchain. Se in seguito si ha bisogno di questi programmi, essi dovranno essere ricompilati e reinstallati. Nel libro BLFS ci sono le istruzioni per questo.
La saggezza è per l'anima ciò che la salute è per il corpo.
François de La Rochefoucauld