Home Page

Tips page
c
cellulari
debian
egittologia
emacs
emacs-latex
hardware
html
inglese
java
latex
linux
matlab
misc
mysql
network
octave
programming

*Raise A to the power of B
*Usare il profiler
*Variabili d'ambiente per gcc

python
security
sed
tech
webapps
windows

University Page

Programming

Debian & Linux

Some works

About me

Del.icio.us Bookmarks

BOINC Combined Statistics

Site Statistics

Contact me sending an e-mail (antispam defense activated)

debian

hacker emblem

blogger

GeoURL

View Sandro Tosi's profile on LinkedIn

This is my Google PageRank

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