gcc在i686上找不到bits / predefs.h

好的,所以,我从Ubuntu 12.04 64位切换到32位,并安装build-essential.

然后我编译并安装了GMP-5.0.5,MPFR-3.1.1,MPC-1.0,ISL-0.10和CLOOG-0.17.0。 我检出了一个主要的gcc主干的副本,并试图用下面的configuration行(从一个单独的目录)构build它:

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

configuration运行良好,所以我运行make && make check 。 这运行良好一段时间,但然后失败,出现以下错误:

 /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 

我环顾四周,但是我似乎发现所有的东西都是这个错误是在x86_64上引起的,没有安装gcc-multilib ,因为Ubuntu和Debian使用了mutiarch系统,分离了这些库。 好吧,好吧…但是我使用i686,那么为什么我需要64位库? 任何帮助,将不胜感激。 谢谢。

尝试做一个

 sudo apt-get install gcc-multilib 

我不认为安装32位系统会改变计算机的体系结构,因为您的计算机将始终是64位计算机。 安装64位版本的Ubuntu应该只会提供更好的多核性能。 由于您的计算机仍然是64位计算机,因此您可能需要一个可在64位计算机上编译的C编译器。 因此gcc-multilib。 我认为。

海湾合作委员会multilib技巧并没有为我工作。 相反,在构build环境中设置这个技巧有一个诀窍:

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