gcc no puede encontrar bits/predefs.h en i686
ubuntu-12.04 (2)
Intenta hacer una
sudo apt-get install gcc-multilib
No creo que la instalación de un sistema de 32 bits cambie la arquitectura de su computadora, porque su computadora siempre será una máquina de 64 bits. Instalar la versión de 64 bits de Ubuntu solo debería ofrecer un mejor rendimiento multi-core. Como su computadora todavía es una computadora de 64 bits, probablemente necesite un compilador de C que compilará en máquinas de 64 bits. De ahí el gcc-multilib. Creo.
De acuerdo, cambié de Ubuntu 12.04 de 64 bits a 32 bits e instalé build-essential.
Luego compilé e instalé GMP-5.0.5, MPFR-3.1.1, MPC-1.0, ISL-0.10 y CLOOG-0.17.0. Revisé una copia del tronco principal de gcc e intenté construirlo con la siguiente línea de configuración (desde un directorio aparte):
../svnsrc/configure --prefix=/usr/GCC/svn --enable-__cxa_atexit --with-plugin-ld=/usr/bin/ld.gold --enable-threads=posix --enable-werror --enable-build-with-cxx --with-gmp=/usr/GCC/prereq/svn --with-mpfr=/usr/GCC/prereq/svn --with-mpc=/usr/GCC/prereq/svn --with-isl=/usr/GCC/prereq/svn --with-cloog=/usr/GCC/prereq/svn --enable-languages=c,c++
Configurar funcionó bien y entonces ejecuté make && make check
. Esto funcionó bien por un tiempo, pero luego falló con el siguiente error:
/home/matt/GCC/svnbuild/./gcc/xgcc -B/home/matt/GCC/svnbuild/./gcc/ -B/usr/GCC/svn/i686-pc-linux-gnu/bin/ -B/usr/GCC/svn/i686-pc-linux-gnu/lib/ -isystem /usr/GCC/svn/i686-pc-linux-gnu/include -isystem /usr/GCC/svn/i686-pc-linux-gnu/sys-include -g -O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fpic -mlong-double-80 -I. -I. -I../.././gcc -I../../../svnsrc/libgcc -I../../../svnsrc/libgcc/. -I../../../svnsrc/libgcc/../gcc -I../../../svnsrc/libgcc/../include -I../../../svnsrc/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o _muldi3.o -MT _muldi3.o -MD -MP -MF _muldi3.dep -DL_muldi3 -c ../../../svnsrc/libgcc/libgcc2.c -fvisibility=hidden -DHIDE_EXPORTS
In file included from /usr/include/stdio.h:28:0,
from ../../../svnsrc/libgcc/../gcc/tsystem.h:88,
from ../../../svnsrc/libgcc/libgcc2.c:29:
/usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory
#include <bits/predefs.h>
^
compilation terminated.
make[3]: *** [_muldi3.o] Error 1
make[3]: Leaving directory `/home/matt/GCC/svnbuild/i686-pc-linux-gnu/libgcc
Miré a mi alrededor, pero todo lo que pareció encontrar fue que este error fue causado en x86_64, al no instalar gcc-multilib
, porque Ubuntu y Debian usan el sistema mutiarch, separando las bibliotecas. De acuerdo, bien ... pero estoy usando i686, ¿por qué necesitaría las bibliotecas de 64 bits? Cualquier ayuda sería apreciada. Gracias.
el truco gcc-multilib no funcionó para mí. En cambio, establecer esto en el entorno de construcción hizo el truco:
C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)