gcc не может найти биты /prevfs.h на i686
Итак, я перешел с 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 и попытался собрать ее с помощью следующей строки конфигурации (из отдельного каталога):
../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
Я осмотрелся, но все, что я нашел, было то, что эта ошибка была вызвана на x86_64, не устанавливая gcc-multilib
потому что Ubuntu и Debian используют систему mutiarch, разделяющую библиотеки. Хорошо, хорошо... но я использую i686, так зачем мне нужны 64-битные библиотеки? Любая помощь будет оценена. Благодарю.
2 ответа
Попробуйте сделать
sudo apt-get install gcc-multilib
Я не думаю, что установка 32-битной системы меняет архитектуру вашего компьютера, потому что ваш компьютер всегда будет 64-битной машиной. Установка 64-битной версии Ubuntu должна давать только лучшую многоядерную производительность. Поскольку ваш компьютер все еще является 64-разрядным, вам, вероятно, нужен компилятор C, который будет компилироваться на 64-разрядных компьютерах. Отсюда и gcc-multilib. Я думаю.
Трюк с gcc-multilib не сработал для меня. Вместо этого, установка этого в среде сборки сделала свое дело:
C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)