Intentar compilar incluso el programa más simple ( int main(){}) con -m32un sistema de 64 bits falla:
$ gcc -m32 test.c
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
collect2: error: ld returned 1 exit status
Parece que todavía está buscando erróneamente en los directorios incorrectos cuando -m32se especifica.
libgcc-4.8-dev:i386está instalado y he verificado que las bibliotecas de 32 bits se encuentran en /usr/lib/gcc/i686-linux-gnu/4.8/.
He intentado configurar y exportar LD_INCLUDE_PATHy fue LD_LIBRARY_PATHen vano.

Respuestas:
Primero, necesita instalar "gcc-multilib" y "g ++ - multilib"
Entonces su comando actual funcionará,
fuente
g++-multilibtambién será necesario.libc6-dev-i386.Para compilar correctamente el código C en ejecutables x86 de 32 bits en un entorno x86_64, debe instalar los siguientes paquetes adicionales:
Después de una llamada de compilación como
tiene éxito
fuente
Este problema también ocurre cuando la
gccversión no coincide con la versión degcc-multilib. En este caso, debe instalar la versión correcta de los paquetes multilib. Por ejemplo; Estaba usando la versión gcc,4.6así que tuve que instalargcc-4.6-multilibyg++-4.6-multilibporque elgcc-multilibpaquete predeterminado era para4.8.fuente