69 votes

gcc ne peut pas trouver de bits/predefs.h sur i686

Bon, alors, je suis passé de ubuntu 12.04 64 bits à 32 bits et installé build-essential.

J'ai ensuite compilé et installé GMP-5.0.5, MPFR-3.1.1, MPC-1.0, ISL-0,10 et CLOOG-0.17.0. J'ai vérifié une copie des principaux gcc tronc et la tentative de construire avec la ligne de configuration suivante (à partir d'un répertoire distinct):

../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++

Configurer fonctionnait bien et donc j'ai couru make && make check. Cela allait à l'amende pour un certain temps, mais il a échoué avec l'erreur suivante:

/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

Je regardai autour de moi, mais tout ce que j'ai semblé trouver est que cette erreur a été causée sur x86_64, par le pas de l'installation d' gcc-multilib, parce que Ubuntu et Debian utilise le mutiarch système, en séparant les bibliothèques. Bien, très bien...mais je suis en utilisant i686, alors pourquoi aurais-je besoin de le 64 bits des bibliothèques? Toute aide serait appréciée. Merci.

123voto

kdazzle Points 1881

Essayez de faire une

sudo apt-get install gcc-multilib

Je ne pense pas que l'installation d'un système 32 bits, les modifications de l'architecture de votre ordinateur, parce que votre ordinateur sera toujours une machine 64 bits. L'installation de la version 64 bits de Ubuntu ne devrait donner de meilleurs multi-core performance. Étant donné que votre ordinateur est encore un ordinateur 64 bits, vous avez probablement besoin d'un compilateur C qui compile sur les ordinateurs 64 bits. D'où le gcc-multilib. Je pense que.

4voto

zultron Points 156

le gcc-multilib astuce ne fonctionne pas pour moi. Au lieu de cela, cette mise dans l'environnement de compilation a fait le tour:

C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X