Compilare applicazioni a 32bit su 64bit

23 July 2010, sezione Linux

Cercando di compilare i sorgenti del progetto di reti di calcolatori su cui mi sto concentrando ultimamente mi sono imbattuto in un antipaticissimo errore. La compilazione andava a buon fine ma all’esecuzione ricevevo questo messaggio:
dimensione di int e/o long int != 4  -> TERMINO
La dimensione degli interi è una variabile dipendente dall’architettura per il quale un programma è compilato, in questo caso il prof ha pensato bene di evitare qualsiasi problema di compatibilità eliminando…la compatibilità!

E’ il caso di reinstallare tutto solo perché la nostra distribuzione di Linux è a 64bit? Certo che no! Linux a 64bit è perfettamente in grado di avviare codice a 32 l’unica cosa che dobbiamo fare è compilare il programma a 32 bit. Per fare ciò dobbiamo però installare qualche libreria in più…

sudo apt-get install libc6-dev-i386

Ora siamo pronti per compilare in 32bit. Per farlo aggiungiamo la flag -m32 al comando gcc o modifichiamo il Makefile, nel caso ne avessimo uno, aggiungendo la voce GCCFLAGS= -m32.