# Come funzionano le CFLAGS?? [FAQ]

## nomadsoul

-Premetto che ho gia cercato su google e sul forum-

volevo solo sapere che ruolo hanno le impostazioni delle CFLAGS.

fin'ora sn riuscito a capire che -march=processore

ottimizza il sistema per il processore che hai

quello che non capisco è a cosa servono gli altri tag tipo

-03 -pipe etc

di conseguenza non so come ottimizzare al meglio il tutto  :Razz: 

grazie a tutti dell'aiuto

----------

## fedeliallalinea

Per me basta che metti

```
-march=processore -O2 -pipe -fomit-frame-pointer
```

O -On al posto di -O2 se hai un processore un po lento e poca ram.

----------

## MyZelF

Prova con un

```
$ man gcc
```

 :Wink: 

----------

## -YoShi-

Oppure se proprio non vuoi andare di $ man dai un occhio a questo (a mio avviso) interessante post   :Wink: 

LinK

----------

## nomadsoul

 :Shocked:  sticaxxil casino è che gcc lo devo ancora creare... prima di fare il bootstrap volevo settare i flags al meglio  :Very Happy: 

edit:

ho capito.. ho toccato un argomento delicatissssimo  :Very Happy: 

----------

## hardskinone

le CFLAG puoi sempre cambiarle in un secondo momento pena pero' il dover ricompilare tutto con le nuove opzioni.

----------

## nomadsoul

ecco appunto...  :Razz: 

----------

## blackfede

O meglio, le puoi cambiare quando ti pare senza dover ricompilare nulla, però se le cambi è perchè vuoi un'ottimizzazione più spinta, e ha poco senso usare dei programmi compilati con le vecchie flags, insieme ad altri compilati con le nuove...il tutto  IHMO!  :Razz: 

----------

## maiosyet

Volevo aprire una discussione simile ma non ne avevo mai il tempo, mi intrufolo in questa con un paio di domande che da tanto mi faccio:

 C'è un elenco delle cflags con relative spiegazioni? Sarebbe comodo. Ad esempio due giorni fa mi sono compilato kde senza la cflag per kde e non è servito a una pippa   :Shocked: 

Del tipo: 

-march pentium4 = ottimizzazione per processori pentium4 ecc. 

E se non c'è potremmo sempre farne uno (ma mi sembra strano che non ci sia)

----------

## blackfede

Qui trovi l'elenco:

http://www.gentoo.org/dyn/use-index.xml

Se le vuoi vedere TUTTE, ma proprio TUTTE usa il comando 

euse -i

----------

## fedeliallalinea

 *blackfede wrote:*   

> Qui trovi l'elenco:
> 
> http://www.gentoo.org/dyn/use-index.xml
> 
> Se le vuoi vedere TUTTE, ma proprio TUTTE usa il comando 

 

Attento che queste sono le USE FLAGS e non le CFLAGS.

----------

## blackfede

ARRRGGG   :Exclamation:   :Exclamation:   :Exclamation: 

Ma cosa mi sono fumato stasera????  :Sad: 

Chiedo venia...  :Confused: 

Se vuoi un'elenco delle CFLAGS un bel

man gcc e man g++, risolve tutto!  :Smile: 

Li trovera l'elenco completo.

----------

## maiosyet

Ah ops...ma allora le CFLAG che cosa sono?   :Shocked: 

Tutta la documentazione del sito parla di USE flag, non di CFLAG

----------

## blackfede

Le CFLAGS sono le flag di compilazione, praticamente sono le opzioni che puoi passare al compilatore per fargli ottimizzare il codice, e fargli creare quindi eseguibili più performanti sulla tua macchina.

Comunque se cerchi in giro sul forum trovi veramente un sacco di materiale che ti può aiutare a capire meglio. Se ti interessa, una discussione interessante (ma in inglese) è il topic "CFLAGS Central", sono circa 20-25 pagine di disquisizioni sulle CFLAGS migliori per varie architetture.

----------

## fedeliallalinea

 *maiosyet wrote:*   

> Ah ops...ma allora le CFLAG che cosa sono?   

 

Le CFLAGS sono le ottimizzazioni per il compilatore (creera' dei binari ottimizzati).

----------

## maiosyet

Dalla documentazione: 

CFLAGS  	Le opzioni per il gcc quando compila programmi in C (file *.c)

E occhei...ma quindi un elenco di cfleg non c'è?

USE  	Questa vi permette di definire componenti opzionali, se esistono, che possono essere inclusi durante la compilazione di altri programmi. Per esempio se avete gnome incluso nella variabile USE, quando compilate xchat verrà incluso il supporto GNOME. Anche tutte le dipendenze sono USE-sensibili.

Ma quindi tantovale abilitarle tutte le USE flag?

----------

## fedeliallalinea

 *maiosyet wrote:*   

> E occhei...ma quindi un elenco di cfleg non c'è?

 

si

```
$ man gcc
```

 *maiosyet wrote:*   

> Ma quindi tantovale abilitarle tutte le USE flag?

 

No solo quelle che vuoi che ci siano. Per esempio io voglio il supporto kde ma non gnome,..

----------

## Danilo

 *maiosyet wrote:*   

> Ah ops...ma allora le CFLAG che cosa sono?  
> 
> Tutta la documentazione del sito parla di USE flag, non di CFLAG

 

Allora le CFLAGsono le flag di ottimizzazione del compilatore. Questo concetto lo trovi in qualunque file Makefile, in qualunque piattaforma/sistema operativo che usa c++. 

Esse vengono passate direttamente al compilatore. 

Con essi provvedi (te ne cito solo qualcuna):

- ottimizzazioni varie (es.: attivare le direttiva inline) : -O, -O1, -O2,...

- inserire o meno le informazioni di debug -g, -g1, ...-gall

- ecc ecc

Da notare che quando scrivi march=pentium4 gli stai dicendo di attivare TUTTE le ottimizzazioni consigliate x pentium 4.

La lista delle CFLAG la trovi ANCHE con un man g++

Le USE FLAG sono delle flag specifiche di Gentoo (non so se altre distribuzioni usano un concetto analogo) e con esse decidi per la specifica compilazione quale supporto attivare (o per tutte le future compilazioni se le inserisci in /etc/make.conf).

Es: Se tu usi solo kde tu potrai mettere in /etc/make.conf:

```
 

Use "-gnome -gtk"

```

In questo modo quando compili qualcosa dici al compilatore di non attivare il supporto per gnome e gtk. E' ovvio che se ti compili gnucash lui comunque ti compila qualcosa di gtk perche' e'  essenziale.

In questo modo risparmi un botto di librerie da compilare.

Emerge e tutto quello che c'e' dietro provvede a smazzare le use e a settare correttamente i vari configure - che produrranno i vari makefile - che saranno dati in pasto al compilatore.

Ciao.

----------

## maiosyet

Grazie mille, ma anche se lo scrivevi una sola volta capivo lostesso   :Wink: 

editShev: la battuta è riferita al fatto che il post appariva ripetuto per errore quattro volte. Ora tre copie sono state eliminate, avverto per dovere di cronaca e permettere la comprensione della battuta  :Razz: 

----------

