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

时间:2012-09-25 21:52:42

标签: gcc ubuntu-12.04

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

然后我编译并安装了GMP-5.0.5,MPFR-3.1.1,MPC-1.0,ISL-0.10和CLOOG-0.17.0。我查看了主gcc trunk的副本,并尝试使用以下配置行(来自单独的目录)构建它:

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

配置运行正常,因此我运行了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

我环顾四周,但我似乎发现的一切都是由于没有安装gcc-multilib而导致x86_64导致此错误,因为Ubuntu和Debian使用mutiarch系统,将库分开。好的,很好......但是我正在使用i686,那为什么我需要64位库呢?任何帮助,将不胜感激。感谢。

2 个答案:

答案 0 :(得分:123)

尝试做

sudo apt-get install gcc-multilib

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

答案 1 :(得分:4)

gcc-multilib技巧对我来说没有用。相反,在构建环境中设置它可以解决问题:

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