|
Contact me sending an e-mail (antispam defense activated) |
Title: Variabili d'ambiente per gcc: CHOST, CFLAG e CXXFLAG
Author: Sandro Tosi
Last modified: 2006-04-12
Quando ricompiliamo un software, spesso il motivo e` di aumentarne le
prestazioni adattando il binario alla propria macchina. E` bene quindi
indicare al compilatore alcune opzioni per far si` che il codice
generato sia il piu` ottimizzato possibile per la nostra architettura.
Quando compiliamo chiamando direttamente il compilatore (gcc o altri),
possiamo specificare sulla linea di comando le opzioni di
ottimizzazione che intendiamo applicare. Quando invece il compilatore
viene richiamato da altri tool, per esempio tramite l'utilizzo di
make, allora dobbiamo trovare un modo alternativo per specificare
queste opzioni.
Questa possibilita` viene consentita tramite la valorizzazione di
alcune variabili d'ambiente:
export CHOST=parametri
export CFLAG=parametri
export CXXFLAG=parametri
(e` bene fare l'export di queste variabili, in quanto altrimenti non
saranno accessibili dal compilatore, in quanto eseguito dentro
sotto-shell della shell corrente).
CHOST indica per quale specifica architettura si vuole compilare i
sorgenti; se la compilazione viene effettuata soltanto per la
propria macchina, scegliere il valore piu` aderente al processore
presente. Esempio: export CHOST="i686-pc-linux-gnu"
CFLAG indica quali flag si vogliono utilizzare per compilare il
codice C. Esempio: CFLAGS='-O2 -mcpu=athlon-xp -march=athlon-xp'
CXXFLAG indica quali flag si vogliono utilizzare per compilare il
codice C++; spesso vanno bene le stesse opzioni di prima, quindi
possiamo indicare CXXFLAGS="${CFLAGS}", altrimenti definiremo la
variabile con le opzioni che meglio riteniamo opportune, come fatto
sopra.
Per scegliere al meglio le ottimizzazioni da applicare conviene
leggere la manpage di gcc e cercare sulla documentazione online,
http://gcc.gnu.com . Altri due link utili sono i seguenti:
http://linuxreviews.org/howtos/compiling/
http://www.gnu.org/software/gmp/manual/html_node/Build-Options.html
|