He construido GCC 4.7 en mi sistema x86 de 32 bits de Linux. Cuando intento compilar en forma cruzada con la bandera -m64 consigoGCC: lo siento, no implementado: modo de 64 bits no compilado en
Lo sentimos, no se han aplicado: el modo de 64 bits no está compilado en
mientras que el compilador proporcionada por defecto por mi distribución de Linux puede cruzada compila con -m64.
¿Qué debo pasar a ./configure para habilitar el modo de 64 bits en GCC? Estas son las opciones que he utilizado para construir GCC 4.7:
$ /usr/local/bin/g++ -v Using built-in specs.
COLLECT_GCC=/usr/local/bin/g++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i686-pc-linux-gnu/4.7.0/lto-wrapper
Target: i686-pc-linux-gnu
Configured with: ./configure --enable-multiarch --with-cloog=/usr/local/ --with-mpfr=/usr/local/ --with-ppl=/usr/local/ --verbose --enable-languages=c,c++
Thread model: posix gcc version 4.7.0 20120113 (experimental) (GCC)
EDIT:
--enable multilib y --enable-objetivos = i686-pc-linux-gnu, x86_64-pc- linux-gnu
no cambia la situación. El compilador todavía se queja sobre el modo de 65 bits no compilado en:
$ g ++ -v Usando las características incorporadas. COLLECT_GCC = g ++ COLLECT_LTO_WRAPPER =/usr/local/libexec/gcc/i686-pc-linux-gnu/4.7.0/lto-wrapper Target: i686-pc-linux-gnu Configurado con: ./configure --enable -multiarch --with-cloog =/usr/local/--with-mpfr =/usr/local/--with-ppl =/usr/local/--verbose --enable-languages = c, C++ --enable -multilib --enable-targets = i686-pc-linux-gnu, x86_64-pc-linux-gnu Modelo de subproceso: posix gcc versión 4.7.0 20120113 (experimental) (GCC)
$ g ++ -m64 c.cpp c.cpp: 1: 0: Lo sentimos, no se han aplicado: el modo de 64 bits no compilado en
'--enable-multiarch' sugiere Debian (o derivado), y como recuerdo, FSF's GCC realmente no funciona tan bien con los sistemas multiarch de Debian. Es posible que deba aplicar los parches de Debian a las instantáneas de FSF GCC. – hvd
Por supuesto que no funcionará así. Multilib tiene * compatibilidad hacia atrás *, y no * hacia adelante *. Para compilar código de 64 bits en una máquina de 32 bits, debe compilar SDK mínimo: binutils + libc [musl, uclibc, glibc, ...] + gcc. – 0andriy