Re: Flag di compilazione
Premoli, Roberto [ITPPG/1010] wrote:
Preso da mania di ricompilazione ottimizzata,
ho installato apt-build, e, strano a dirsi, funziona.
Ho dato un bel
man gcc
ed ho visto una MAREA di opzioni, parametri, flag di
compilazione....
Volevo sceglierne qualcuno da passare al tool di
configurazione di apt-build (all'inizio ho scelto solo
livello di compilazione medio, e cpu pentium2) ma,
francamente, temo di scegliere opzioni/parametri/valori
inutili o perfino dannosi.
In poche parole, sapete cosigliarmi un howto su quali
parametri scegliere?
In giro si trovano varie parametrizzazioni,
(es: -march=pentium -O3 -pipe -fomit-frame-pointer)
ma NON spiegano perche' e cosa fa il singolo parametro,
che al di la' di termini evidenti ( es -march=i686)
sono totalmente, almeno a me, oscuri
(es: -Wall, -maccumulate-outgoing-args, etc)
se guardi in lista negli ultimi due mesi si è parlato abbondantemente di
questo argomento
in ogni caso nel file /etc/apt/apt-build.conf puoi indicare varie cose;
il mio contiene le seguneti righe:
build-dir = /mnt/mandrake/src/apt-build/build
repository-dir = /var/cache/apt-build/repository
Olevel = -O2
march = -march=athlon-tbird
mcpu = -mcpu=athlon-tbird
options = -mcpu=athlon-tbird -march=athlon-tbird -pipe -fomit-frame-pointer
build-dir <- indica la directory in cui scaricare e compilare i sorgenti
(prendi una partizione con libero almeno 5 Mb per evitare problemi di
spazio)
repository-dir <- indica dove piazzare i .deb una volta compilati
Olevel <- indica il livello di ottimizzazione
march e mcpu <- indicano il tuo processore
options <- indica le varie opzioni da passare alla compilazione di ogni file
non esiste un numero di parametri migliori di altri, questo perché ogni
"sorgente/configurazione hardware/utilizzo della propra box" può avere
esigenze diverse e quindi per raggiungere il tuo scopo magari devi dare
dei parametri che possono sembrare andare contro i risultati che vuoi
ottenere. Dipende da cosa compili e per che macchina lo compili (quanta
e quale ram ha, quanto hd libero, velocità hd, ...)
Per esempio se devi compilare qualcosa e vuoi ottimizzare per avere dei
sorgenti il più veloci possibili in esecuzione devi fare due conti su
quanto grossi sono i binari che ottieni, più grossi sono e più ram
occupano e più tempo occorre per caricarli in memoria. Vedere quanti
processi hai in media caricati in memoria quando lo esegui, ...
Per esempio se non hai molta ram ed i binari sono molto grossi, allora
può convenire compilare per ottenere binari più piccoli (e non più con
istruzioni singole più veloci), in questo modo occupi meno ram (magari
per questo eviti swap su disco che rallentano) e ottieni un programma
che sulla tua macchina viene eseguito più velocemente.
La cosa basilare secondo me è:
1) compilare soltanto alcune cose che ti permettono di avere un aumento
di prestazioni generali (come le glibc, il kernel, ...)
2) compilare programmi che usi molto e non devono attendere di continuo
degli I/O (se rendi più veloce un editor di testo, ti si carica si più
velocemente, ma poi è limitato dalla tua lentezza nei battere i tasti)
3) compilare per il tuo processore (o per lo meno per pentium), senza
guardare molto le ottimizzazioni esasperate: alle volte queste di fanno
guadagnare solo delle frazioni di secondo ...
Ciao
Davide
--
Linux User: 302090: http://counter.li.org
Prodotti consigliati:
Sistema operativo: Debian: http://www.it.debian.org
Strumenti per l'ufficio: OpenOffice.org: http://it.openoffice.org
Database: PostgreSQL: http://www.postgres.org
Browser: FireFox: http://texturizer.net/firefox
Client di posta: Thunderbird: http://texturizer.net/thunderbird
Enciclopedia: wikipedia: http://it.wikipedia.org
--
Non autorizzo la memorizzazione del mio indirizzo di posta a chi usa
outlook: non voglio essere invaso da spam
--
Email.it, the professional e-mail, gratis per te: http://www.email.it/f
Sponsor:
Vuoi imparare a posizionare il tuo sito web nei motori di ricerca?
* Partecipa al Workshop Nazionale SEO Italia 2004 - clicca qui
Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid'98&d=8-10
Reply to: