Gcc не может найти библиотеки GMP, MPFR и MPC

Я пытаюсь скомпилировать GCC на Mac OS 10.5.7. Я использовал эту команду для настройки GCC после установки GMP, MPFR и MPC:

../gcc-4.5.0/configure --target=$i586-elf --prefix=/usr/local/cross 
    --disable-nls 
    --enable-languages=c,c++,fortran,java,objc,obj-c++,treelang,ada 
    --without-headers --with-libiconv-prefix=/opt/local --with-gmp=/usr/local 
    --with-mpfr=/usr/local --with-mpc=/usr/local

Я получил эту ошибку:

checking for the correct version of gmp.h... buggy but acceptable
checking for the correct version of mpfr.h... yes
checking for the correct version of mpc.h... yes
checking for the correct version of the gmp/mpfr/mpc libraries... no
configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
their locations.  Source code for these libraries can be found at
their respective hosting sites as well as at
ftp://gcc.gnu.org/pub/gcc/infrastructure/.  See also
http://gcc.gnu.org/install/prerequisites.html for additional info.  If
you obtained GMP, MPFR and/or MPC from a vendor distribution package,
make sure that you have installed both the libraries and the header
files.  They may be located in separate packages.

почему GCC может найти заголовки для GMP, MPFR и MPC, но не библиотеки?

7 ответов


Я подозреваю, что проблема может заключаться в том, что библиотеки предназначены для 32-разрядных, когда вы пытаетесь построить 64-разрядный компилятор, или наоборот.

недавно я смог построить GCC 4.5.1 на MacOS X 10.6.4, но я сам построил и установил библиотеки GMP, MPFR и MPC - in /usr/gnu64 (нестандартное место, которое я использую для вещей, которые я устанавливаю для своей собственной выгоды). Я также использовал параметр конфигурации:

CC='gcc -m64'

для принудительной 64-разрядной сборки. У меня были похожие проблемы на Linux (плюс проблема с регулярным выражением в opt-функциях.awk-легко фиксируется двумя косыми чертами перед открытой скобкой) и обнаружил, что есть обновления для библиотек MPFR и MPC, так как я построил на MacOS X:

  • GMP 5.0.1 (вместо 4.2.4)
  • MPC 0.8.2 (вместо 0.8.1)
  • MPFR 3.0.0 (вместо 2.4.2)

С тех пор, как я написал это, я несколько изменил свою методологию. То, что я сейчас делаю, задокументировано в установите GNU GCC на Mac. В принципе, я получаю текущие версии GMP, MPC, MPFR и помещаю их исходный код в исходный каталог GCC и позволяю GCC компилировать библиотеки для себя. Это заставляет GCC заниматься поиском библиотек.


вы должны использовать

with-gmp=/usr/local/include \
    --with-mpfr=/usr/local/include --with-mpc=/usr/local/include

вместо

with-gmp=/usr/local \
    --with-mpfr=/usr/local --with-mpc=/usr/local

У меня была такая же проблема, пытаясь скомпилировать gcc-4.6.0 на OX 10.6.6. Я был с помощью ПГМ-4.3.2 ; используя вместо стандарта GMP-5.0.1, скрипта configure появляется, чтобы правильно угадать "СС=ОСС-с std=gnu99 с CFLAGS=-О2 -педантичный -М64 -mtune=сердечником2 -март=сердечником2", и передает, что на mpfr (3.0.1) и ПДК (0.9) , так что любой с помощью этих и более поздних версий не стоит впадать в эту ошибку.


Я бы предложил установить gmp, mpfr и mpc, загрузив их со своих веб-сайтов. Затем запустите ./configure (в папке, куда загружены файлы) и sudo make install.

GCC должен компилироваться затем на Mac OSX (mountain lion).

обратите внимание, что mpc зависит от mpfr и gmp.

я использовал это для компиляции ядра шестерни на Mac OSX.


с установленными портами Mac mpfr, libmpc и gmp я смог закрепить это на скрипте configure:

--with-mpc=/opt/local/var/macports/software/libmpc/0.8.2_0/opt/local
--with-gmp=/opt/local/var/macports/software/gmp/5.0.1_0/opt/local
--with-mpfr=/opt/local/var/macports/software/mpfr/3.0.0-p8_0/opt/local 

Это было для компиляции Ti MSP430 toolchain.


Я только что решил подобную проблему. Поскольку мой процессор x86_64, но моя ОС 32bit, когда я устанавливаю GMP (5.0.2), он пытается настроить в 64bit. Поэтому я перекомпилировал свой GMP с конфигурацией, такой как ABI=32 ./формировать... затем эта проблема GCC исчезла.


была аналогичная проблема в Ubuntu 16.04 64 бит. Решается с помощью MPC-1.0.1.смола.gz, mpfr-3.1.6.смола.xz и gmp-6.1.2.смола.xz