Pagina 1 di 1

Impostare compilatori

Inviato: mar 6 mar 2007, 10:42
da zacmarco
Ciao ragazzi!
Ho due domandine sull' HOSTTYPE e sul MACHTYPE.
Immagino che tali variabili d'ambiente vengano usate dai compilatori per stabilire per e su quale architettura compilare.
Le domande sono:

1) E' proprio così che si dice a GCC come compilare. Se io cambio tali variabili riesco a fare una cross-compilazione?
1) settando queste variabili, le impostazioni immagino verranno usate ad es. da GCC. Ma se io compilo un sorgente scaricato da internet e creato con gli autotools (in cui si specifica ANCHE l'architettura ospite e target), chi prevale?

Grazie mille ragazzi!

Re: Impostare compilatori

Inviato: mar 6 mar 2007, 11:32
da gioco
zacmarco ha scritto:Ho due domandine sull' HOSTTYPE e sul MACHTYPE.
Immagino che tali variabili d'ambiente vengano usate dai compilatori per stabilire per e su quale architettura compilare.
Non è così.

Codice: Seleziona tutto

man bash
zacmarco ha scritto:1) E' proprio così che si dice a GCC come compilare. Se io cambio tali variabili riesco a fare una cross-compilazione?
No, hai bisogno di un cross compiler. Qui [1] trovi una guida per costruire un cross compiler per PPC.

[1] http://www.cs.duke.edu/~irwin/gcc_ppc.html

Inviato: mar 6 mar 2007, 12:03
da zacmarco
Ciao grazie per la risposta.
In realtà il mio scopo non è quello di metter su una toolchain di cross-compilazione (in realtà devo fare anche quello).
Più che altro voglio capire come manipolare le impostazioni di GCC. un esempio banale è quello di fare in modo che ogni compilazione sul mio ATHLON XP venga ottimizzata per questa architettura e non per il generico x86, senza dover indicarlo ogni volta a "configure". O in genere, anche se non sto compilando da un pacchetto sorgente, ma semplicemente invocando GCC, vorrei utilizzare il codice ottimizzato per la mia architettura.
Poi c'è la questione della cross-compilazione. So ovviamente che cambiando completamente architettura (es x86 -> PPC) devo cambiare compilatore (e usarne uno "cross"). Quella è un'altra storia.
Grazie mille!

Inviato: mar 6 mar 2007, 12:33
da albatros
Da
http://gcc.gnu.org/install/configure.html
--with-cpu=cpu
Specify which cpu variant the compiler should generate code for by default. cpu will be used as the default value of the -mcpu= switch. This option is only supported on some targets, including ARM, i386, M68k, PowerPC, and SPARC.
--with-schedule=cpu
--with-arch=cpu
--with-tune=cpu
--with-abi=abi
--with-fpu=type
--with-float=type
These configure options provide default values for the -mschedule=, -march=, -mtune=, -mabi=, and -mfpu= options and for -mhard-float or -msoft-float. As with --with-cpu, which switches will be accepted and acceptable values of the arguments depend on the target.
Questa è una possibilità se ti compilii da solo il compilatore.

Altrimenti puoi usare degli alias tipo (questi sono quelli che uso io):

alias gcc='gcc -mfpmath=sse -msse2 -m3dnow -march=athlon-xp -pipe -O2'

alias konf='CFLAGS='\''-mfpmath=sse -msse2 -msse3 -m3dnow -march=athlon-xp -pipe -O2'\'' CXXFLAGS='\''-mfpmath=sse -msse2 -msse3 -m3dnow -march=athlon-xp -pipe -O2'\'' ./configure

oppure puoi fare uno scriptino che lanci gcc con le opzioni che vuoi...

Per fare cross compiling avrai bisogno anche delle librerie per la piattaforma target...
Ma, come hai già detto, è un'altra storia...

:)

Inviato: mar 6 mar 2007, 12:46
da zacmarco
Ok!
Si certo, quella degli alias è una buona possibilità. Però pensavo si potesse (tramite qualche var di ambiente o qualche file di conf) configurare il target di default della mia compilazione. Dopo tutto se (non so per quale motivo) dovessi compilare per un x86 base, dovrei eliminare l'alias (o ribadire gli argomenti a GCC, ma poi non so se funzionerebbe).

comunque per la cross-comp per ora sto lavorando su una toolchain già pronta (quella della scheda FOX...), ma prima o poi vorrò mettere le mani direttamente sul codice da ZERO (in modo da piantare la scheda una volta per tutte :) ).
Meno male che la FOX si salva con un'altra FOX...

Grazie ancora per l'aiuto