View previous topic :: View next topic |
Author |
Message |
polslinux Apprentice
Joined: 12 Apr 2010 Posts: 253 Location: Veneto
|
Posted: Tue May 04, 2010 6:40 pm Post subject: [risolto] cflags dubbio su parametro |
|
|
una cosa...ho un dubbio...
Code: | gcc -march=native -E -v - </dev/null 2>&1 | sed -n 's/.* -v - //p' |
mi restituisce:
Code: | -D_FORTIFY_SOURCE=2 -march=core2 -mcx16 -msahf --param l1-cache-size=32 --param l1-cache-line-size=64 -mtune=core2 |
quindi nella riga cflags devo mettere tutta quella roba li giusto? compreso il D_FORTIFY ecc??? è un parametro che non ho mai sentito...
Last edited by polslinux on Wed May 05, 2010 8:20 pm; edited 1 time in total |
|
Back to top |
|
|
armaoin Tux's lil' helper
Joined: 02 Apr 2006 Posts: 110
|
Posted: Tue May 04, 2010 8:41 pm Post subject: |
|
|
No no.
Quel comando serve per vedere quale -march devi mettere in questo caso core2.
Personalmente avrei fatto come ti hanno consigliato mettendo -march=native.
Inoltre metti le varie ottimizzazioni.
Qualcosa del tipo:
Code: |
CFLAGS="-O2 -pipe -march=native"
CXXFLAGS="${CFLAGS}"
|
|
|
Back to top |
|
|
polslinux Apprentice
Joined: 12 Apr 2010 Posts: 253 Location: Veneto
|
Posted: Wed May 05, 2010 12:24 pm Post subject: |
|
|
ahhh ok...quindi se io metto:
tutte queste opzioni:
Code: | -D_FORTIFY_SOURCE=2 -march=core2 -mcx16 -msahf --param l1-cache-size=32 --param l1-cache-line-size=64 -mtune=core2 |
sono già incluse in native e quindi non le devo scrivere giusto? |
|
Back to top |
|
|
djinnZ Advocate
Joined: 02 Nov 2006 Posts: 4831 Location: somewhere in L.O.S.
|
Posted: Wed May 05, 2010 2:20 pm Post subject: |
|
|
no, -D_FORTIFY_SOURCE=2 per esempio è di default del gcc le altre sono implicite al native (o sono ridondanti come mtune uguale a march).
In generale: se usi una macchina per compilare anche per altre o se vuoi portare in giro pacchetti binari native è una gigantesca idiozia, negli altri casi è una comodità.
Attenzione che alcune flag non vengono filtrate dagli ebuild.
"-O2 -march=core2 -fomit-frame-pointers -pipe" e "-Wl, -O1 -Wl, --as-needed" ottengono un risultato milgiore (in attesa che diventino di default, per --as-needed dovremmo esserci ormai).
Attenzione ad opzioni come -mshaf, su alcuni celeron o sempron sono presenti alcune istruzioni di questo set ma non tutte ed i risultati potrebbero lasciare a desiderare. _________________ scita et risus abundant in ore stultorum sed etiam semper severi insani sunt
mala tempora currunt...mater stultorum semper pregna est
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist |
|
Back to top |
|
|
polslinux Apprentice
Joined: 12 Apr 2010 Posts: 253 Location: Veneto
|
Posted: Wed May 05, 2010 7:00 pm Post subject: |
|
|
ok, grazie mille dell'esaustiva risposta
una cosa...tu hai scritto:
Code: | "-O2 -march=core2 -fomit-frame-pointers -pipe" e "-Wl, -O1 -Wl, --as-needed" |
ma non si possono mettere -02 e -01 insieme vero
Comunque, praticamente la CFLAGS viene fuori così giusto?:
Code: | "-O2 -march=core2 -fomit-frame-pointers -pipe -Wl --as-needed" |
|
|
Back to top |
|
|
djinnZ Advocate
Joined: 02 Nov 2006 Posts: 4831 Location: somewhere in L.O.S.
|
Posted: Wed May 05, 2010 8:10 pm Post subject: |
|
|
le seconde sono LDFLAGS (istruzioni per il linker non vanno mai messe nelle cflags).
Quindi o scrivi (documentati e verifica che sto andando a memoria)
Code: | CFLAGS="-O2 -march=core2 -fomit-frame-pointers -pipe"
LDFLAGS="-Wl,-O1 -Wl,--as-needed" |
o
Code: | CFLAGS="-O2 -march=native -fomit-frame-pointers -pipe"
LDFLAGS="-Wl,-O1 -Wl,--as-needed" |
Se pensi di creare pacchetti binari e gestire macchine differenti meglio la prima (così sai per cosa hai compilato un pacchetto), se hai solo un pc tanto vale usare direttamente la seconda.
Per me avere pieno controllo è meglio e quindi "native" é solo fonte di guai e limita molto ma sono opinioni personali.
Per esempio c'era un utente del forum che usava -march=i686 -mtune=athlon-xp (o qualcosa del genere). Cosa comporta una simile scelta? Il codice è ottimizzato nei limiti del possibile per athlon-xp ma gira senza alcun problema su tutte le cpu i686 e successive.
Eccellente soluzione per condividere il codice in un parco macchine eterogeneo ma per un singolo pc è solo meno ottimizzato. _________________ scita et risus abundant in ore stultorum sed etiam semper severi insani sunt
mala tempora currunt...mater stultorum semper pregna est
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist |
|
Back to top |
|
|
polslinux Apprentice
Joined: 12 Apr 2010 Posts: 253 Location: Veneto
|
Posted: Wed May 05, 2010 8:21 pm Post subject: |
|
|
djinnZ wrote: | le seconde sono LDFLAGS (istruzioni per il linker non vanno mai messe nelle cflags).
Quindi o scrivi (documentati e verifica che sto andando a memoria)
Code: | CFLAGS="-O2 -march=core2 -fomit-frame-pointers -pipe"
LDFLAGS="-Wl,-O1 -Wl,--as-needed" |
o
Code: | CFLAGS="-O2 -march=native -fomit-frame-pointers -pipe"
LDFLAGS="-Wl,-O1 -Wl,--as-needed" |
Se pensi di creare pacchetti binari e gestire macchine differenti meglio la prima (così sai per cosa hai compilato un pacchetto), se hai solo un pc tanto vale usare direttamente la seconda.
Per me avere pieno controllo è meglio e quindi "native" é solo fonte di guai e limita molto ma sono opinioni personali.
Per esempio c'era un utente del forum che usava -march=i686 -mtune=athlon-xp (o qualcosa del genere). Cosa comporta una simile scelta? Il codice è ottimizzato nei limiti del possibile per athlon-xp ma gira senza alcun problema su tutte le cpu i686 e successive.
Eccellente soluzione per condividere il codice in un parco macchine eterogeneo ma per un singolo pc è solo meno ottimizzato. |
ok, grazie mille dell'aiuto!
Mi sono informato e si, le LDFLAGS dette da te vanno benissimo
Grazie ancora! |
|
Back to top |
|
|
|