mercoledì 6 ottobre 2010

GCC: compilare codice a 32bit su sistemi a 64bit

Per riuscire a compilare correttamente codice a 32bit su sistemi a 64bit è necessario che siano disponibili sul sistema anche le versioni a 32bit delle librerie richieste.
Tale versione delle librerie (32bit) non vengono, di solito, installate di default sui sistemi a 64bit.

Per esperienza personale, quando si hanno problemi di compilazione, dovuti alla generazione di applicazioni 32bit su macchine a 64bit, nella maggior parte dei casi si può risolvere il problema installando i seguenti pacchetti su sistemi Ubuntu (con gcc già installato):
 sudo apt-get install libc6-dev-i386 
o in alternativa
 sudo apt-get install gcc-multilib 
e questi su sustemi Fedora/RedHat (con gcc già installato):
 yum install glibc-devel.i686 libgcc.i686 


Se i suddetti pacchetti non sono installati, tipici errori che si ottengono in fase di compilazione e linking sono (in assenza di libc6-dev-i386 o glibc-devel.i686):
 [...]
/usr/include/gnu/stubs.h:7:27: error:
gnu/stubs-32.h: No such file or directory
e (su sistemi Fedora/RedHat, in presenza di glibc-devel.i686 ma assenza di libgcc.i686):
 [...]/ld: cannot find -lgcc_s 
[...]
collect2: ld returned 1 exit status

Nessun commento:

Posta un commento