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 |