# [compilazione] quante librerie ti porti ?

## codadilupo

Stavo leggendo la ml del milug, quando un gentooers mi sottopone il link seguente: http://www.osnews.com/story.php?news_id=10152

... non so se puo' interessare.

Coda

----------

## Cazzantonio

```
CFLAGS = "-Os -s -Wl,--as-needed"
```

hai provato? funziona, non da problemi e dimezza davvero il numero di librerie linkate??  :Shocked: 

----------

## codadilupo

 *Cazzantonio wrote:*   

> 
> 
> ```
> CFLAGS = "-Os -s -Wl,--as-needed"
> ```
> ...

 

non ho ancora provato, per questo l'ho passato: speravo in qualche conferma  :Wink: 

Pero' il tipo che l'ha postato sulla ml del milug dice di aver fatto delle prove soddisfacenti, e lui usa gentoo...

Coda

----------

## codadilupo

Altro link. Gli sviluppatori di ubuntulinux ne discutono... 

http://www.ubuntuforums.org/showthread.php?t=17287

Coda

----------

## AlterX

 *Cazzantonio wrote:*   

> 
> 
> ```
> CFLAGS = "-Os -s -Wl,--as-needed"
> ```
> ...

 

Ho cercato info sul gcc.gnu.org di queste flag...

non mi è chiara la -s e -Wl cosa fanno! qualcuno mi suggerisce il significato??  :Wink: 

E curiosità per chi ha già un sistema funzionante: che fine fanno tutte quelle librerie non più utilizzate?!?!?  :Rolling Eyes: 

come si potrebbere eliminare per, giustamente, liberare lo spazio?!?

----------

## codadilupo

 *AlterX wrote:*   

> Ho cercato info sul gcc.gnu.org di queste flag...
> 
> non mi è chiara la -s e -Wl cosa fanno! qualcuno mi suggerisce il significato?? 
> 
> E curiosità per chi ha già un sistema funzionante: che fine fanno tutte quelle librerie non più utilizzate?!?!? 
> ...

 

non credo la cosa si ponga in questo senso  :Wink: 

Cioe', non é che le librerie le puoi buttare: se non servono a gnome-terminal, serviranno magari a gnuPG... il punto é che se quando apro, per dire, openoffice, lui mi linka 600 librerie, ci mette un tot... se me ne puo' linkare 300, in teoria, é meglio  :Wink: 

P.S.: cmq, ora sto provando... e siccome sono conoscituo in tutti i CED di questa terra come coda "giu' le mani da quella tastiera" lupo (san), lo sto facendo direttamente con

```
# emerge -uDe world
```

  :Laughing:   :Laughing:   :Laughing:   :Shocked: 

Coda

----------

## codadilupo

siamo a 10 di 228 e tutto va bene  :Wink: 

CodaLast edited by codadilupo on Mon Apr 04, 2005 6:24 pm; edited 6 times in total

----------

## Cagnulein

uh tienici aggiornati la cosa mi interessa particolarmente  :Cool: 

----------

## gutter

 *AlterX wrote:*   

> 
> 
> Ho cercato info sul gcc.gnu.org di queste flag...
> 
> non mi è chiara la -s e -Wl cosa fanno! qualcuno mi suggerisce il significato?? 
> ...

 

Allora vediamo di chiarire questa CFLAGS:

 *man gcc wrote:*   

> 
> 
> -s
> 
>     Remove all symbol table and relocation information from the executable. 

 

In pratica fa lo strip. Cosa che emerge fa automaticamente su ogni eseguibile (prima di fare il merge) a meno che tra le FEATURES non hai "nostrip".

 *man gcc wrote:*   

> 
> 
> -Wl,option
> 
>     Pass option as an option to the linker. If option contains commas, it is split into multiple options at the commas.

 

Questo switch serve a passare opzioni al linker (ld). L'ozione che in questo caso passi è --as-needed.

 *man ld wrote:*   

> 
> 
>  --no-as-needed
> 
>            This option affects ELF DT_NEEDED tags for dynamic  libraries  men-
> ...

 

Se lanci readelf -d vedi i soname dei .so che sono necessari durante il link dinamico. 

Ora in generale quando si usa pkgconfig, capita che ne vengano inseriti alcuni non realmente utilizzati e quindi durante il link a runtime perdi tempo inutile. Se invece utilizzi l'opzione di cui sopra metti solo quelli realmente utilizzati.

----------

## Cazzantonio

quindi in pratica -s è inutile... (mi fido di te gutter  :Wink:  ) mentre -Wl, --as-needed va tra le LDFLAGS se non sbaglio...

Mi sorge però un dubbio.... io utilizzo già come LDFLAGS -Wl, -O1, solo che per tale opzione nell'help di ld c'è solo questo:

```
       -O level

           If level is a numeric values greater than zero ld optimizes the out-

           put.  This might take significantly longer  and  therefore  probably

           should only be enabled for the final binary.
```

non è che magari --as-needed è contenuta in -O1? (o O2, O3....)

Come faccio a sapere cosa è contenuto in O1?

----------

## AlterX

 *Cazzantonio wrote:*   

> 
> 
> Come faccio a sapere cosa è contenuto in O1?

 

prova qui

----------

## .:chrome:.

 *Cazzantonio wrote:*   

> quindi in pratica -s è inutile... (mi fido di te gutter  ) mentre -Wl, --as-needed va tra le LDFLAGS se non sbaglio...
> 
> Mi sorge però un dubbio.... io utilizzo già come LDFLAGS -Wl, -O1, solo che per tale opzione nell'help di ld c'è solo questo:

 

anche secondo me andrebbero tra le LDFLAGS, ma se metti --as-needed si incazza non poco... ora come ora non ho tempo di fare esperimenti, anche se la cosa mi interessa un sacco... magari ci provo stanotte  :Smile: 

----------

## Cazzantonio

 *AlterX wrote:*   

> prova qui

 

grazie, ma quelle sono le opzioni per il gcc.... io mi riferifo alle ottimizzazioni per ld

----------

## AlterX

 *Cazzantonio wrote:*   

>  *AlterX wrote:*   prova qui 
> 
> grazie, ma quelle sono le opzioni per il gcc.... io mi riferifo alle ottimizzazioni per ld

 

Ahhh ok scusa  :Embarassed: 

----------

## codadilupo

EDIT: 21 di 228.. e ancora tutto bene...

EDIT: dopo binutils passato indenne, ora sta compilando

```
blackbox root # genlop -c

 * sys-devel/gcc-3.3.5-r1

       current merge time: 9 minutes and 42 seconds.

       ETA: 4 minutes and 31 seconds.
```

EDIT: ancora tutto bene... 

```
blackbox root # genlop -c

 * sys-libs/cracklib-2.7-r11

       current merge time: 54 seconds.

       ETA: 1 minute and 37 seconds.

blackbox root # genlop -c

 * sys-libs/pam-0.77-r6

       current merge time: 1 minute and 58 seconds.

       ETA: 1 day, 18 hours, 6 minutes and 49 seconds.
```

EDIT: le glibc vanno spedite...

EDIT: pacchetto 58 di 228 e non ha bippato nemmeno una volta, il PIII... già questo sarebbe un successo  :Very Happy: 

Pero', uff !! Non avevo mai affrontato una ricompilazione da zero.... spero di finire prima di domani  :Rolling Eyes: 

EDIT: pacchetto 72, mysql, andato !

EDIT: pacchetto 92: lieee1284

STRAEDIT: evvai! siamo al 114° pacchetto ! Ne mancano solo.... la meta  :Rolling Eyes: 

CodaLast edited by codadilupo on Mon Apr 04, 2005 11:34 pm; edited 3 times in total

----------

## =DvD=

Veramente interessante, coda: se non ti da problemi mi butto anche io nella compilazione -e world.

Vedi dei cambiamenti nel tempo di caricamento?

----------

## codadilupo

ancora non ho provato, ma alcuni pacchetti, effettivamente, risultano con meno librerie linkate: tieni conto, pero', che sto testando sul server, che quindi é già ridotto all'osso di suo, e perché non ha nessuna applicazione "user", e perché tutti i servizi - samba, cups, apache, iptables etc... - sono stati compilati con cflags e use personalizzate.

Il vero test potro' farlo solo alla fine, quando riavviero' samba (che ora ci mette una vita, tra nmbd e smbd).

Coda

----------

## federico

Tutto questo e' molto interessante, hai stimolato la mia curiosita' !

Incredibile che con un sistema operativo come gentoo, che mira ad essere _veloce_ non c'eravamo ancora arrivati a tutto questo ://///////

Federico

----------

## codadilupo

Okey, siamo alla prova del nove.

prima:

```
blackbox root # readelf -d /usr/sbin/nmbd |grep NEEDED | wc -l

6

blackbox root # readelf -d /usr/sbin/smbd |grep NEEDED | wc -l

10
```

e dopo:

```
blackbox root # readelf -d /usr/sbin/nmbd |grep NEEDED | wc -l

4

blackbox root # readelf -d /usr/sbin/smbd |grep NEEDED | wc -l

6
```

```
blackbox root # /etc/init.d/samba stop

 * samba -> stop: smbd...                                                                                               [ ok ] 

 * samba -> stop: nmbd...                                                                                               [ ok ]

blackbox root # time /etc/init.d/samba start

 * samba -> start: smbd...                                                                                              [ ok ]

 * samba -> start: nmbd...                                                                                              [ ok ]

real    0m1.831s

user    0m0.804s

sys     0m0.148s

blackbox root #
```

Pur troppo non ho preso il time 'prima' dell'operazione, ma se vi fidate del mio 'orologio biologico' posso dirvi che variava da qualche secondo (5-6) a molti secondi (30-40!!)

Tutto sta a vedere se é solo un caso, oppure il sistema é davvero piu' snello: solo il tempo ce lo dirà  :Wink: 

Coda

----------

## mc619

Beh WOW!!!!

Ma è tutto rosa e fiori ?

Non è che qualcuno ha un po di tempo per fare un mega riassunto di tutti i post con ottimizzazioni etc per i compilatori linker??

----------

## AlterX

uhm...

ma perchè tutte queste ottimizzazioni, che non dovrebbero essere dannose se si parte da uno stage1, non vengono

considerate di default come politica di gentoo?!?  :Rolling Eyes: 

ci deve essere qualcosa che li spinge a non renderle di default... :Smile: 

secondo voi??

----------

## FiNeX

 *codadilupo wrote:*   

> 
> 
> Pur troppo non ho preso il time 'prima' dell'operazione, ma se vi fidate del mio 'orologio biologico' posso dirvi che variava da qualche secondo (5-6) a molti secondi (30-40!!)

 

Ok, io ho appena preso il tempo "prima" dell'operazione sempre per startare samba: 

```

real    0m0.749s

user    0m0.135s

sys     0m0.054s

```

Prima era compilato con il solito "-O2 -march=pentium4 -fomit-frame-pointer" ed ora invece sto ricompilando con "-Os -march=pentium4 -fomit-frame-pointer -Wl,--as-needed". Appena finisce la ricompilazione vi faccio sapere.

bye

P.S: Sarebbe interessante fare un po' di verifiche anche sulla dimensione effettiva dei binari e delle librerie compilate.

P.P.S: Anche a me le librerie "NEEDED" per nmbd e smbd sono le stesse di codadilupo, vediamo dopo la ricompilazione.

----------

## Cazzantonio

ora sto compilando con 

```
CFLAGS="-O2 -march=athlon-xp -mcpu=athlon-xp -mmmx -msse -m3dnow -mfpmath=sse -fomit-frame-pointer -pipe -frename-registers"

LDFLAGS="-Wl,-O1 -Wl,--as-needed"
```

e sembra andare tutto a meraviglia  :Very Happy: 

P.S. non sto ricompilando da zero... sto solo aggiornando  :Wink: 

P.P.S. non dovrebbero andare in LDFLAGS le ottimizzazioni per il linker?

----------

## earcar

Ok mi sono fidato di coda e ho iniziato la mia bella ricompilazione del mondo...  :Smile: 

681 pacchetti....  :Shocked:  speriamo bene....  :Confused: 

Sono su amd64 e fin'ora (4 of 681) non ha dato problemi...

In ogni caso vi farò sapere  :Wink: 

Ciauz

earcar  :Wink: 

----------

## Cazzantonio

come si fa a misurare i tempi di avvio di un programma? scusate la domanda idiota....

P.S. vedo un aumento delle prestazioni percepibile ma non vorrei dipendesse dal fatto che ho appena montato un ciocco da 512 di ram in più al pc....

----------

## n3m0

O bella. Sarebbe la terza ricompilazione del mondo in 2 mesi per me  :Smile: 

----------

## earcar

 *Cazzantonio wrote:*   

> P.P.S. non dovrebbero andare in LDFLAGS le ottimizzazioni per il linker?

 

Si vanno in LDFLAGS, infatti se le mettevo nelle CFLAGS mi falliva l'emerge di gettext...  :Wink: 

----------

## codadilupo

 *Cazzantonio wrote:*   

> come si fa a misurare i tempi di avvio di un programma? scusate la domanda idiota....
> 
> P.S. vedo un aumento delle prestazioni percepibile ma non vorrei dipendesse dal fatto che ho appena montato un ciocco da 512 di ram in più al pc....

 

noooooo, figuratiiiii  :Wink:  Che vuoi che cambi, per lui, se ha 512 Mb di ram, o un giga  :Laughing: 

Ad ogni modo, per prendere il tempo, lanci il comando preceduto da time:

```
# time startx
```

Coda

----------

## codadilupo

 *earcar wrote:*   

> se le mettevo nelle CFLAGS mi falliva l'emerge di gettext... 

 

io le ho messe in CFLAGS, e non ho avuto problemi  :Shocked: 

Coda

----------

## lavish

 *Cazzantonio wrote:*   

> P.S. vedo un aumento delle prestazioni percepibile ma non vorrei dipendesse dal fatto che ho appena montato un ciocco da 512 di ram in più al pc....

 

Guarda che se non vuoi quel banco puoi anche darlo a me sai!  :Laughing:   :Laughing:   :Laughing:   :Laughing:   :Laughing:   :Laughing: 

----------

## FiNeX

Bene... samba è stato ricompilato correttamente e questi sono i tempi "prima" della ricompilazione (ovvero compilato con "-O2 -march=pentium4 -fomit-frame-pointer" )

```

real    0m0.749s

user    0m0.135s

sys     0m0.054s 

```

e questi sono i tempi compilati con "-Os -march=pentium4 -fomit-frame-pointer -Wl,--as-needed"

```

real    0m0.241s

user    0m0.137s

sys     0m0.050s

```

Sono consapevole che per avere una valutazione corretta dell'eventuale incremento/decremento delle prestazioni, sarebbe stato corretto effettuare un campione più ampio di prove, quindi verificherò i tempi anche per X.

----------

## earcar

 *codadilupo wrote:*   

> 
> 
> io le ho messe in CFLAGS, e non ho avuto problemi 

 

 :Shocked:  strano... a me dava un problema con il linker durante la compilazione...

In ogni caso è consigliato mettere le opzioni del linker in LDFLAGS

earcar  :Wink: 

----------

## Cazzantonio

 *lavish wrote:*   

> Guarda che se non vuoi quel banco puoi anche darlo a me sai!      

 

mmm... penso che lo terrò... sai, ho appena ricompilato il kernel per il supporto highmem e mi scoccerebbe ricompilarlo ancora  :Wink:   :Laughing: 

A parte l'ovvio aumento di prestazioni dovuto alla ram raddoppiata ho notato che le applicazioni ci mettono davvero meno a partire una volta ricompilate... 

Siccome per ora non mi sembra ci siano stati eccessivi problemi suggerirei di inserire il topic tra i post utilissimi  :Wink: 

----------

## lavish

io prima di compilare con quella flag, aspetto che a qualcuno scoppi il pc   :Laughing:   ... se ciò non dovesse avvenire, ben venga e ricompilerò anche io

----------

## AlterX

Son tentato.... :Laughing: 

mi sa che ci proverò anche io a breve!

----------

## lavish

Eh sì.. non sono tutte rose e fiori ... ci sono parecchi programmi che non compilano o che danno problemi...

----------

## AlterX

 *lavish wrote:*   

> Eh sì.. non sono tutte rose e fiori ... ci sono parecchi programmi che non compilano o che danno problemi...

 

GULP  :Shocked: 

----------

## .:chrome:.

 *AlterX wrote:*   

> uhm...
> 
> ma perchè tutte queste ottimizzazioni, che non dovrebbero essere dannose se si parte da uno stage1, non vengono
> 
> considerate di default come politica di gentoo?!? 
> ...

 

non vengono messe per default perché non è detto che si adattino alle esigenze di tutti.

chi le vuole se le setta

e poi... se devi preparare una macchina in produzione (non necessariamente un server) punti sulla velocità o sulla stabilità?

----------

## gutter

 *lavish wrote:*   

> Eh sì.. non sono tutte rose e fiori ... ci sono parecchi programmi che non compilano o che danno problemi...

 

Ecco ora ho fatto bene ad aspettare  :Very Happy: 

----------

## fedeliallalinea

 *gutter wrote:*   

>  *lavish wrote:*   Eh sì.. non sono tutte rose e fiori ... ci sono parecchi programmi che non compilano o che danno problemi... 
> 
> Ecco ora ho fatto bene ad aspettare 

 

Ma li dice che samba non va eppure FiNeX l'ha fatto

----------

## gutter

 *fedeliallalinea wrote:*   

> 
> 
> Ma li dice che samba non va eppure FiNeX l'ha fatto

 

Boh misteri della fede  :Wink: 

Ma tu hai provato? O stai compilando? O aspetti come me?

----------

## fedeliallalinea

 *gutter wrote:*   

> Ma tu hai provato? O stai compilando? O aspetti come me?

 

A me non disturbano quei 3-4 secondi in piu' sinceramente... lascio come sono messo che posso fare pacchetti binari per gli altri pc e scambiarli

----------

## gutter

 *fedeliallalinea wrote:*   

> 
> 
> A me non disturbano quei 3-4 secondi in piu' sinceramente... lascio come sono messo che posso fare pacchetti binari per gli altri pc e scambiarli

 

Anche la tua è una politica sensata  :Wink: 

----------

## lavish

 *fedeliallalinea wrote:*   

> A me non disturbano quei 3-4 secondi in piu' sinceramente... lascio come sono messo che posso fare pacchetti binari per gli altri pc e scambiarli

 

Idem  :Wink: 

----------

## FiNeX

già... samba è stato ricompilato e funziona correttamente, ho ricompilato qualcos'altro e sinceramente non noto chissà che incremento di prestazioni, di sicuro librerie linkate ai software ce ne sono di meno (es kdm da 7 a 4). sarebbe da ricompilare tutto il sistema e fare dei test rispetto ad un sistema compilato in modo differente.

----------

## FiNeX

sto facendo altri test, kile ad esempio:

prima

```

user    0m1.463s

sys     0m0.092s

user    0m1.461s

sys     0m0.102s

user    0m1.462s

sys     0m0.091s

user    0m1.460s

sys     0m0.098s

```

49 librerie linkate ed il binario è di 1.4Mb

dopo

```

user    0m1.275s

sys     0m0.091s

user    0m1.268s

sys     0m0.091s

user    0m1.279s

sys     0m0.087s

user    0m1.161s

sys     0m0.097s

```

con 13 librerie linkate ed il binario occupa 1,2 Mb

Quindi qui c'è stato un "netto miglioramento"  :Smile: 

----------

## redmatrix

Ho un dubbio tecnico su questa questione.

Le librerie linkate di cui parlate vengono linkate dinamicamente immagino, vero (se fosse staticamente non staremmo nemmeno a parlare di quest'argomento)?

Se quindi è si il dubbio è:

Perché un'applicativo dovrebbe caricare librerie di cui non necessita? Forse perché si cerca di creare una cache per eventuali avvii di altre applicazioni? Cioè se uso nautilus credo che sia logico caricare in memoria delle librerie di totem altrimenti l'avvio di nautilus sarebbe sicuramente qualche secondo + veloce ma sono secondi che perderei appena nautilus cerca di mostrarmi l'anteprima di un filmato.

Cmq non riesco a capire il senso di questi "flag" se come tempo complessivo ottengo la stessa cosa.

Qualche spiegazione migliore?

----------

## FiNeX

ho fatto un test anche su kget:

prima

Librerie linkate: 36

Spazio occupato su disco:

```

313K kget

1,9K khtml_kget.la

68K khtml_kget.so

```

tempi di caricamento

tempo prima esecuzione

```

user    0m0.101s

sys     0m0.012s

```

tempi esecuzioni sucessive

```

user    0m0.104s

sys     0m0.010s

user    0m0.105s

sys     0m0.008s

user    0m0.102s

sys     0m0.009s

```

dopo ricompilazione con nuovi flag

Librerie linkate: 9

Spazio occupato su disco:

```

266K  kget

1,9K  khtml_kget.la

62K  khtml_kget.so

```

tempi di caricamento

tempo prima esecuzione

```

user    0m0.082s

sys     0m0.006s

```

tempi esecuzioni sucessive

```

user    0m0.075s

sys     0m0.012s

user    0m0.080s

sys     0m0.006s

user    0m0.077s

sys     0m0.012s

```

Quindi con -Os al posto di -O2 e -Wl,-as--needed vengono effettivamente generati dei binari con solo le lib utilizzate, -Os poi ottimizza anche lo spazio utilizzato, forse era meglio se i test venivano effettuati con solo --as-needed, però già che c'ero ho provato anche -Os. In ogni caso a parte le minori dimensioni di binari e librerie (che quindi possono venire caricate in memoria più velocemente) non credo che questa opzione dia un incremento notevole di prestazioni del programma compilato, al massimo (come ho potuto notare io e anche qualcun altro) velocizza il caricamento del programma. 

P.S: questi test sono assolutamente "empirici", fatti solo per avere un'idea della questione. Non ho assolutamente analizzato queste opzioni etc etc etc, quindi prendete con le pinze questi miei "test"

P.P.S: ho appena saputo che il kernel NT è compilato con -Os ... che sia vero?

P.P.P.S: mi scuso se ho scritto qualche cavolata

----------

## G-DannY

Provato a ricompilare tutto aggiungendo -Wl,--as-needed... Risultato mi ha spaccato tutto a circa 1/4 della compilazione per quella incompatibilità con le gtk-engines... Praticamente se tenevo quella ldflag non potevo più compilare nulla che avesse a che fare con le gtk...

Così ho rimosso -Wl,--as-needed e per provare ho portato la cflag -03 a -0s così per provare...

questo ora è il mio make.conf...

```
CFLAGS="-Os -march=athlon-xp -funroll-loops -fomit-frame-pointer -falign-functions=64 -pipe"

CHOST="i686-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"

LDFLAGS="-Wl,-O1 -Wl,--sort-common -s"

USE="nptl pic dvd alsa gnome gtk gtk2 -kde -qt -arts -oss hal 3dnow mmx sse"

PORTDIR_OVERLAY="/usr/local/portage"

GENTOO_MIRRORS="http://www.die.unipd.it/pub/Linux/distributions/gentoo-sources/ http://gentoo.mirrors.pair.com/"

#PORTAGE_BINHOST=""

ACCEPT_KEYWORDS="~x86"

FEATURES="ccache"

CCACHE_SIZE="2G"

LINGUAS="it"

LANGUAGE="39"

PRELINK_PATH_MASK="/opt"
```

32/460 in corso...

----------

## Sparker

Sto compilando (per la prima volta) gome 2.10 con -Wl,--as-needed

ho avuto anch'io il problema con gtk-engine, ma il resto dei pacchetti sembrano compilarsi.

Ora sono circa a 3/4 di tutto gnome, stasera completo e posto eventuali problemi

----------

## G-DannY

Uhm, io non mi fido ancora più di tanto.. già oggi ho rischiato di sputtanare il tutto... ora vado co sto 0s per provare e il prelink...

Speriamo che domani abbia finito di compialre, ora sono in ufficio e non so nulla sull'avanzamento  :Wink: 

----------

## .:chrome:.

provato sulla mia pelle ed ecco i risultati: https://forums.gentoo.org/viewtopic-t-320225.html

mi pare che non ci sia bisogno di parole. si commneta da solo

----------

## gaffiere

evvai, partito con la mia prima ricompilazione totale del sistema!

1/450... vediamo quanto ci mette e se le cose poi migliorano  :Wink: 

see ya

----------

## Sparker

Finita la compilazione di gnome senza altri errori e sembra andare senza problemi

 *k.gothmog wrote:*   

> provato sulla mia pelle ed ecco i risultati: https://forums.gentoo.org/viewtopic-t-320225.html
> 
> mi pare che non ci sia bisogno di parole. si commneta da solo

 

beh, non mi sembra un gran problema. E' il solito rischio che si corre ad usare qualcosa oltre a -O2 -arch=i686

Diversi pacchetti hanno CFLAGS filtrate dall'ebuild. Anzi, è meno rischioso perchè almeno si blocca al configure e non dopo 2 ore di compilazione.

E anche -Os crea problemi a qualche pacchetto (o almeno li creava)

Per il momento tengo la flag, a meno di non avere problemi gravi. (magari prima di aggiornare gcc e glibc ne faccio un backup)

Ah dimenticavo. I binari essendo linkati a meno librerie in teoria dovrebbero anche ottenere risultati migliori con il prelink. (almeno credo, non sono un gran programmatore C. Anzi, non lo sono del tutto  :Smile: )

----------

## gaffiere

59/450 ... temperature ok, non si è ancora attivata la 2 ventola del case.

vabbeh dai permettetemi un po' questo diario di bordo: era un sacco di tempo che non lanciavo una compilazione massiccia  :Very Happy: 

..... :Shocked:   urca! devo andare a comprare i tappi per le orecchie per questa notte!  :Laughing: 

see ya

----------

## gaffiere

come segnalato in qualche altro post, dà errore pure a me su xmms...  :Sad:  vabbeh, commento la riga delle LDFLAGS in /etc/make.conf e si riparte...

see ya

----------

## G-DannY

 *gaffiere wrote:*   

> come segnalato in qualche altro post, dà errore pure a me su xmms...  vabbeh, commento la riga delle LDFLAGS in /etc/make.conf e si riparte...
> 
> see ya

 

Pare infatti che sputtani un pò tutti i programmi che poi chiedono le gtk come librerie... Io anche ho tolto e rifatto tutto da capo...

----------

## codadilupo

a questo punto si profila l'ipotesi che sia colpa delle gtk, non della flag di gcc  :Rolling Eyes: 

Coda

----------

## .:chrome:.

 *codadilupo wrote:*   

> a questo punto si profila l'ipotesi che sia colpa delle gtk, non della flag di gcc 
> 
> Coda

 

direi proprio di no.

leggi l'ultimo capitolo della telenovela: https://forums.gentoo.org/viewtopic-t-321020.html

----------

## Sasdo

ciao, come mai a me con queste *flags:

```
CFLAGS="-s -Os -march=i686 -pipe -fomit-frame-pointer -fsigned-char -falign-functions=4 -falign-jumps=4"

CHOST="i386-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"

LDFLAGS="-Wl,-O1 -Wl,--as-needed"

```

ottengo:

```
...

checking for working aclocal-1.4... found

checking for working autoconf... found

checking for working automake-1.4... found

checking for working autoheader... found

checking for working makeinfo... found

checking whether to enable maintainer-specific portions of Makefiles... no

checking for i386-pc-linux-gnu-gcc... gcc

checking for C compiler default output file name... configure: error: C compiler cannot create executables

```

Qualcuno sa perchè?

ecco il mio gcc ed ld:

```
gcc:

gcc version 3.4.3  (Gentoo Linux 3.4.3, ssp-3.4.3-0, pie-8.7.6.6)

ls:

GNU ld version 2.15.90.0.1.1 20040303

```

Grazie!

Ciao!

----------

## earcar

Caccia il -s dalle tue CFLAGS

iauz

earcar  :Wink: 

----------

## Sasdo

Ehm... non funziona anche come mi dici tu...

----------

## |_dan_|

ho anche io il tuo stesso problema  :Sad:   :Sad: 

----------

## Cazzantonio

io ho

```
CFLAGS="-O2 -march=i686 -mmmx -msse -mfpmath=sse -fomit-frame-pointer -pipe -frename-registers -ffast-math"

LDFLAGS="-Wl,-O1 -Wl,--as-needed -s"
```

e mi funziona tutto tranne pochissimi pacchetti gtk (per i quali tolgo la flag, li compilo, e la rimetto....)

----------

## AlterX

 *Cazzantonio wrote:*   

> io ho
> 
> ```
> CFLAGS="-O2 -march=i686 -mmmx -msse -mfpmath=sse -fomit-frame-pointer -pipe -frename-registers -ffast-math"
> 
> ...

 

Io a questa configurazione (--as-neded) ci ho dovuto rinunciare, perchè arrivato tipo al 130/40, andava in errore, e una volta risolto il problema, dovevo ripartire di nuovo  :Crying or Very sad: 

Allora l'ho compilato senza --as-needed, e devo dire che è migliorato molto il sistema e addirittura è diminuita la latenza di arts!! 

(ricordo che prima non avevo -Wl,-O1, ne fomit-frame-pointer, ne -pipe, ne msse, mmmx, mfpmath e in tutto questo

era impostato su i386-gnu-...)

mi sa che --as-needed lo userò per installare openoffice e altre cose di grosso peso!  :Wink: 

----------

## .:chrome:.

 *AlterX wrote:*   

> Io a questa configurazione (--as-neded) ci ho dovuto rinunciare, perchè arrivato tipo al 130/40, andava in errore, e una volta risolto il problema, dovevo ripartire di nuovo  

 

non hai letto il post sul bug di ld?

 *AlterX wrote:*   

> mi sa che --as-needed lo userò per installare openoffice e altre cose di grosso peso! 

 

così avrai la certezza assoluta di non compilare OOo  :Confused: 

----------

## AlterX

 *k.gothmog wrote:*   

>  *AlterX wrote:*   Io a questa configurazione (--as-neded) ci ho dovuto rinunciare, perchè arrivato tipo al 130/40, andava in errore, e una volta risolto il problema, dovevo ripartire di nuovo   
> 
> non hai letto il post sul bug di ld?
> 
> 

 

si si, l'ho letto, ma mi dava errori che non centravano molto con le gtk...

me li dava la prima volta su un pacchetto doc, e poi, dopo aver ripreso la compilazione, su openc6, che per altro si basa

su le qt  :Confused:  . Poi mi sono rotto e l'ho tolto.

 *AlterX wrote:*   

> mi sa che --as-needed lo userò per installare openoffice e altre cose di grosso peso! 

 

così avrai la certezza assoluta di non compilare OOo  :Confused: 

Beh io ci provo... :Wink: 

Se va male, lo levo!

tentar non nuoce

----------

## Sasdo

ho risolto, dovevo aggiornare le binutils (e quindi ld)

un emerge binutils ha risolto tutto =)

----------

## IlGab

Io ho provato a installare da 0 una macchina con questo tanto citato --as-needed, l' idea di avere poca roba, solo il necessario, mi aggrada parecchio.

Il sistema è partito senza problemi, ho poi installato apache con mod_php...

```
 * Apache2 has detected a syntax error in your configuration files:

 /usr/sbin/apache2: symbol lookup error: /usr/lib/libaprutil-0.so.0: undefined symbol: gdbm_errno
```

Ho pensato che non caricasse le librerie per la flag, ora ho riemerso tutto senza --as-needed e parte correttamente.

Farò ancora qualche provetta

----------

## Cazzantonio

@IlGab

questo errore te lo ha dato compilando mod_php?

è bastato togliere la flag e compilare nuovamente mod_php oppure hai dovuto ricompilare apache?

mi interesserebbe molto saperlo

----------

## codadilupo

Per quanto riguarda apache con mod_php, posso dire che io l'ho, e l'ho ricompilato con successo, anche con --as-needed. Forse il problema sta in gdbm, perché quella use non l'ho inclusa, già la prima volta che compilavo php e apache, come da package.use

```
net-www/apache-2.0.52-r1  -berkdb -debug -doc -gdbm -ipv6 -ldap +ssl -static -threads
```

Coda

----------

## Cazzantonio

io per ora sto usando --as-needed senza problemi... però per diversi motivi volevo provare un emerge -e world (ho cambiato le cflags in march=i686 in modo da poter copiare direttamente la mia installazione, che dopo tanto tempo è diventata un gioiellino che mi farebbe troppa fatica rifare da capo, sul futuro portatile)

se l'emersione totale va a buon fine vi faccio sapere  :Wink: 

----------

## .:chrome:.

 *IlGab wrote:*   

> 
> 
> ```
>  * Apache2 has detected a syntax error in your configuration files:
> 
> ...

 

effettivamente l'errore può essere imputato a quel bug...

il problema è... cosa vuol dire "tutto"? hai ricompilato tutto il sistema?

bastava ricompilare solo apache (spero che tu abbi afatto questo)

----------

## Cazzantonio

Sono a metà di una ricompilazione del mondo (fatta per altri motivi... non mi sono certo messo a ricompilare per testare --as-needed  :Wink:  )

Per ora sono solo queste le applicazioni che non hanno compilato con la flag discussa... aggiornerò la lista appena finisco la ricompilazione

```
app-admin/usbview

media-libs/libdv

media-libs/imlib

gnome-base/gnome-libs

media-libs/gdk-pixbuf

dev-perl/gtk-perl

x11-themes/gtk-engines

app-text/openjade
```

P.S. 

queste sono le flag con cui compila quasi tutto

```
CFLAGS="-O2 -march=i686 -mmmx -msse -mfpmath=sse -fomit-frame-pointer -pipe -frename-registers -ffast-math"

CXXFLAGS="${CFLAGS}"

LDFLAGS="-Wl,-O1 -Wl,--as-needed -s"
```

queste invece sono le ldflags con cui ho compilato con successo i pacchetti problematici di cui sopra

```
LDFLAGS="-Wl,-O1 -s"
```

----------

## Cazzantonio

Arrivato a più di metà della compilazione del mondo ho rinunciato alla flag --as-needed...  :Sad: 

ho avuto problemi con delle applicazioni dev-java/* che, anche se si erano correttamente emerse con la flag suddetta, facevano casino una volta che uno andava a compilare i programmi che si appoggiavano su quelle librerie/programmi  :Mad: 

Se fosse solo il problema di ricompilare senza flag i pacchetti che si inchiodano pace... il fatto è che spesso ti tocca ricompilare senza flag anche le dipendenze...  :Confused: 

In generale se ci fosse il modo di compilare con --as-needed solo una ristretta classe di pacchetti (quelli che linkano tante librerie...) sarebbe possibile gestire la cosa, altrimenti diventa uno sbattimento inutile perdere tempo per andare a cercare quali pacchetti devi ricompilare ogni volta che ti si pianta un emersione  :Rolling Eyes: 

Qualcuno ha voglia di fare una lista dei pacchetti che meritano questa flag?  :Wink:   :Smile: 

----------

## IlGab

 *Cazzantonio wrote:*   

> @IlGab
> 
> questo errore te lo ha dato compilando mod_php?
> 
> è bastato togliere la flag e compilare nuovamente mod_php oppure hai dovuto ricompilare apache?
> ...

 

Ho levato la flag e ricompilato tutto, non ho provato a ricompilare solo apache, anche se leggo solo ora che non era necessario  :Wink: 

Vabbè tanto la macchina era veloce ci ha messo 3 orette e ha rifatto tutto

----------

## Sasdo

Oh cavoli non ditemi cosi' che e' 3 giorni e 3 notti che il mio picci' sta a compila' tutto!

=)

----------

## ballero

Avete provato ad usarla? link

Ho ricompilato nautilus e ora va che e' 'na scheggia!   :Smile:   :Cool: 

----------

## oRDeX

sei sicuro che TUTTO funzioni?

io non sono sicurissimo ancora..

----------

## IlGab

C' era questo post in cui se ne parlava. A me aveva dato dei problemi con apache e php che si erano risolti levando quel flag.

----------

## ballero

nautilus, gdm, firefox e pan vanno bene. totem non parte. per gli altri software non posso dir nulla.

Tra l'altro ho un sistema totalmente instabile, con reiser4 e kernel supermodificato  :Smile: 

----------

## !equilibrium

 *IlGab wrote:*   

> C' era questo post in cui se ne parlava. A me aveva dato dei problemi con apache e php che si erano risolti levando quel flag.

 

i file di configurazione di compilazione del software devono supprotare as-needed altrimenti dopo la compilazione il software darà problemi, a parte questo problema (che è solo pigrizia degli sviluppatori) è un'opzione "safe", peccato che molti software non ne fanno uso in modo adeguato.

----------

## gutter

Ho fatto il merge del thread di ballero con questo.

Per favore la prossima volta cerchiamo prima di postare.

----------

## Ic3M4n

riprendo questo argomento perche su uno dei link postati nella prima pagina, esattamente questo hanno messo un aggiornamento del 15 giugno che riporto in parte per i più pigri...

 *defsk wrote:*   

> when passed enable-new_ldflags, configure just checks if --as-needed works and if it does then it just assigns the variable LDFLAGS_AS_NEEDED="-Wl,--as-needed", which Makefiles have the liberty of using. Currently most kde Makefile's do. If a component finds that it doesn't work for them, they don't put it on the specific link line. Its manual in that sense.
> 
> one more thing is configure arg is --enable-new_ldflags and NOT --enable-new-ldflags as mentioned by the ./configure --help.

 

che praticamente da quello che ho capito, correggetemi se sbaglio, aggiunge automaticamente la flag --as-needed se e solo se il configure la supporta, altrimenti esegue una compilazione normale. ciò dovrebbe significare che tutti i pacchetti al termine della compilazione dovrebbero funzionare, con o sensa la flag a seconda dei casi.

----------

## federico

Io riguardo l'ultimo aggiornamento non ci ho capito nulla a dire il vero...

----------

## Ic3M4n

 :Question:  non ho capito cosa intendi  :Question: 

----------

## cloc3

 *Ic3M4n wrote:*   

>  ciò dovrebbe significare che tutti i pacchetti al termine della compilazione dovrebbero funzionare, con o sensa la flag a seconda dei casi.

 

Bò. a me pare che rimangano gli stessi problemi di prima.

----------

## SilverXXX

Qualcuno ha provato il nuovo flag?

----------

