[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Apt-build & gcc



On Fri, 07 Jan 2005 08:28:41 +0100, thrillseeka <depa@fastwebnet.it> wrote:
> Sto smanettando con apt-build, giusto per vedere se riesco ad accelerare
> l'avvio di applicazioni come firefox/evolution e soci, ricompilandoli from
> scratch.
> Con piccoli pacchetti (xmms, gkrellm, aterm) ho avuto successo, con
> pacchetti più corposi (firefox, synaptic, etc) fallisco miseramente
> (errori che non comprendo).

purtroppo apt-build non funziona correttamente con tutti i pacchetti,
in pratica per alcuni non riesce a capire qual'è la versione del
pacchetto e quindi di conseguenza non riesce a fare uno o più dei
seguenti:
* scaricare i sorgenti
* creare/entrare nella directory in cui scompattare i sorgenti

I problemi sono molteplici:
* la versione di un pacchetto è possibile recuperarla da più punti
differenti, però c'è il problema principale che non è sempre uguale, o
meglio che in alcuni punti ci sono più versioni in posti differenti.
Questa cosa è abbastanza superabile facendo delle modifiche opporture
ad apt-build per ricercare una versione "corretta" (purtroppo non
riesco a trovare *la* versione "corretta")
* apt-get secondo me ha qualche baco che non permette di risolvere
alcuni piccoli problemi ed individuare *la* versione corretta dei
sorgenti da usare nel caso ci siano effettivamente più versioni (per
chi ha nel source.lst più di una versione di debian o magari anche
solo la security di un'altra versione)

Io per risolvere questi problemi avevo iniziato a guardarmi i sorgenti
di apt-build e generare qualche patch, ma poi mi sono bloccato per i
problemi che riscontro anche su apt-get (ho segnalato uno dei bug che
ho trovato).

Inoltre, come detto sopra, potrebbe essere che, in alcuni casi,
apt-build possa addirittura usare una versione errata di un sorgente e
quindi se riesce a compilare alla fine installa una versione del
pacchetto diversa da quella che ci si aspetta.
Per essere sicuri è sufficiente controllare cosa effettivamente ha
compilato e installato apt-build e se è uguale alla versione che c'è
nalla versione di Debian che usi.

In generale però devo dire che apt-build funziona correttamente per
quei pacchetti dove la versione è reperibile in modo univoco, mentre
non dovrebbe mai funzionare negli altri casi e darti errore (dico
dovrebbe perché le variabili in gioco sono molte ed i pacchetti sono
... su 14 CD per Sarge!)

> Le mie domande sono:
> -avete qualche consiglio da darmi o qualche howto da suggerirmi?

cercare un po' in rete, sulla mailing list debian sono state date
alternative per compilare pacchetti dove apt-build fallisce.

se non ricordo male i passi erano:
# apt-get build-dep <nomepacchetto/i>
# apt-get -b source <nomepacchetto/i>
# apt-get install --reinstall <*.deb>

nota: *.deb sono i .deb creati dalle due operazioni precedenti,
compilandoti un solo pacchetto potresti avere più .deb.

> -che opzioni mi consigliate di passare al gcc su un athlon 2800+ con 1 gb
> di ram? E per un p2 350mhz con 192 mb di ram?

Ottimizzando qualcosa si potrebbero ottenere risultati non desiderati
rispetto alle opzioni usate; i motivi sono i più vari.

In generale se hai installato pacchetti compilati per i386, allora può
essere buona cosa ricompilarli per un'architettura superiore. Alle
volte compilazioni per la tua macchina specifica (es. athlon) ottieni
prestazioni di pochi centesimi di secondo inferiori rispetto a
sorgenti compilati per pentium. Quindi se devi compilare per più
macchina può essere un'ottima soluzione quella di compilare solo una
volta per pentium e poi usare quei .deb su tutte le macchine.

Per quanto riguarda le ottimizzazioni può succedere che compilando per
prestazioni (-Ox), alle volte si ottengono eseguibili più lenti di
quelli compilati per grandezza!! Questo è vero soprattutto per quei
sorgenti che possono generare eseguibili di grosse dimensioni: più è
piccolo l'eseguibile e meno tempo ci impiega per essere caricato in
memoria per essere eseguito  (qui entra in gioco anche la velocità del
tuo hard disk), inoltre ci sono meno probabilità che venga paginata la
sua immagine su hard disk (swap).
Per esempio in gentoo, normalmente, si ricompila tutto per prestazioni
e per la propria macchina; se cerchi in rete puoi trovare vari test
comparativi che dimostrano che in alcuni casi gli eseguibili ottenuti
su una gentoo in questa maniera sono più lenti rispetto ad altre
distribuzioni dove gli stessi sorgenti sono stati compilati con
parametri a prima vista meno performanti.
Come detto non esiste una regola generale ed inoltre penso dipende
molto anche dall'hardware su cui si eseguono i programmi e dalla
versione del compilatore utilizzato.
Ho visto anche delle prove di compilazione dove eseguibili ottenuti
con -Ox erano più veloci di eseguibili ottenuti con -Oy dove y>x

Detto questo posso suggerirti i seguenti parametri:
 -pipe -fomit-frame-pointer    <- per aumentare la velocità di compilazione

 -O2  <- per ottimizzazioni delle prestazioni è megli limitarsi ad O2,
il livello successivo O3 (che è l'ultimo, anche se gcc accetta
tranquillamente anche i progressivi successivi usando in realtà sempre
O3) può dare problemi con alcuni pacchetti e soprattutto con alcune
piattaforme.

 -march=athlon-tbird -mcpu=athlon-tbird   <- per esempio per il mio
processono ho messo questi; serve ad impostare la propria piattaforma
(CPU), per vedere quale usare fa un bel "$ man gcc" e cerca -mcpu o
-march (in realtà se non ricordo male puoi usare anche solo uno dei
due parametri, perché uno implica l'altro, ma usarli entrambi non è
negativo)

Una cosa da compilare per migliorare di molto le prestazioni è la
libreria glibc. Tieni però presente che questa libreria è
*fondamentale* per il funzionamento della tua macchina e che se
qualcosa va storto rischi di non riuscire magari a far ripartire il
sistema! Quindi stai attento a quello che fai. Aggiungo anche che,
sapendo cosa fare, non esistono (quasi) danni irreparabili dovuti a
ricompilazione.
Tempo fa molti qui in lista, tra cui io, abbiamo compilato le glibc
con apt-build e nessuno ha avuto grossi problemi (se non alcuni che
non erano riusciti a compilare).

Spero di non averti confuso troppo le idee ;-)

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



Reply to: