Для создания GCC требуются GMP 4.2+, MPFR 2.3.1+ и MPC 0.8.0+

Я скачал GCC 4.5 с http://www.netgull.com/gcc/releases/gcc-4.5.0/, но когда я пытаюсь настроить/собрать, я получаю следующую ошибку:

Linux:>~/shared_scripts/bin/gcc/gcc-4.5.0 1040> /x/home/prakash_satya/shared_scripts/bin/gcc/gcc-4.5.0/configure CC="gcc -m64" --prefix=/x/home/prakash_satya/shared_scripts/bin/gcc/gcc-4.5.0 --with-gmp-lib=/usr/lib64 --with-mpfr-lib=/usr/lib64 --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-languages=c,c++
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
checking for a sed that does not truncate output... /bin/sed
checking for gawk... gawk
checking for gcc... gcc -m64
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc -m64 accepts -g... yes
checking for gcc -m64 option to accept ISO C89... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for gnatbind... no
checking for gnatmake... no
checking whether compiler driver understands Ada... no
checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2
checking for objdir... .libs
checking for the correct version of gmp.h... 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.
Linux:>~/shared_scripts/bin/gcc/gcc-4.5.0 1041>

Следующие библиотеки присутствуют в соответствующих каталогах

/usr/lib/libgmp.a
/usr/lib64/libgmp.a

/usr/lib/libmpfr.a
/usr/lib64/libmpfr.a

У меня нигде в боксах не установлена ​​библиотека libmpc.a.

Основываясь на ошибке, как я могу знать:

а) какая текущая версия libgmp.a и libmpfr.a установлены.

б) Если они имеют неправильную версию, как я могу развернуть свою версию, не нарушая текущую?


person Programmer    schedule 12.02.2012    source источник
comment
попробуйте запустить ./contrib/download_prerequisites.sh из исходного каталога gcc. У меня это сработало (хотя для текущей версии gcc (gcc-4.7)   -  person Sebastian    schedule 05.04.2012
comment
Сценарий больше не имеет расширения .sh: ./contrib/download_prerequisites.   -  person Jeroen    schedule 06.10.2014
comment
Download_prerequisites.sh был добавлен в 4.6, похоже. В 4.5.0 его нет.   -  person bobpaul    schedule 12.12.2017


Ответы (5)


В каталоге, где у меня установлены эти библиотеки (/usr/gnu64/lib), у меня также есть файл libgmp.la (а также файлы libmpc.la и libmpfr.la), которые содержат читаемый текст. Информация о версии SO находится там, но это не совсем то же самое, что и «версия продукта». Вместо этого он говорит о совместимости ссылок.

Я пытался выяснить, какая версия у меня была, и странное решение, которое я придумал, состояло в том, чтобы запустить GCC (4.6.1), который я создал с параметром -v. В частности, было сказано:

GNU C (GCC) version 4.6.1 (x86_64-apple-darwin11.1.0)
    compiled by GNU C version 4.6.1, GMP version 5.0.1, MPFR version 3.0.0, MPC version 0.8.2
warning: GMP header version 5.0.1 differs from library version 5.0.2.
warning: MPFR header version 3.0.0 differs from library version 3.1.0.
warning: MPC header version 0.8.2 differs from library version 0.9.

Итак, у меня установлены GMP 5.0.2 (но я собрал GCC с 5.0.1), MPFR 3.1.0 (но я собрал GCC с 3.0.0) и MPC 0.9 (но я собрал GCC с 0.8.2). ). Несоответствие возникает из-за того, что я пытался скомпилировать и установить GCC 4.6.2, и, по-видимому, ему требовались более новые версии. (У меня не получилось, но это другая история.)

Я устанавливаю свои собственные библиотеки в /usr/gnu64/lib, а затем сообщаю GCC, где их найти, с параметрами конфигурации --with-mpfr=/usr/gnu64/lib, --with-gmp=/usr/gnu64/lib, --with-mpc=/usr/gnu/64/lib. Эти пути жестко связаны с GCC, и он работает оттуда.

person Jonathan Leffler    schedule 12.02.2012
comment
Я попробовал тот же шаг, но скопировал .a и .la в локальную папку, используя --with-gmp/mpfr в локальную папку, но все равно выдает ту же ошибку. Также я скачал и собрал gmp/mpfr/mpc с gcc.gnu.org/pub/gcc/ инфраструктура [gmp-4.3.2.tar.bz2,mpfr-2.4.2.tar.bz2,mpc-0.8.1.tar.gz], но построение состояний mpc - настройка: ошибка: версия GMP ›= 4.2 требуется, пока gcc все еще остается той же ошибкой. - person Programmer; 13.02.2012
comment
@Prakash: в этом случае предположим, что GCC и его комплект конфигурации знают, что он делает, и приступайте к компиляции и установке трех других библиотек. Я всегда делал это как отдельную операцию, без ссылки на GCC (даже несмотря на то, что GCC запускал перестроения). Я полагаю, что может быть способ заставить GCC собирать и устанавливать библиотеки по ходу дела, имея исходный код для GMP, MPFR, MPC в дереве исходного кода GCC. Проверьте вывод ./configure --help для информации. - person Jonathan Leffler; 13.02.2012
comment
С тех пор, как я написал это, я решил, что GCC собирает версии GMP, MPFR и MPC вместе с компилятором. Теперь я получаю исходный код текущей версии библиотеки и извлекаю его в каталог верхнего уровня исходного кода GCC: gmp-6.0.0, mpfr-3.1.2 и т. д. Затем я создаю символическую ссылку для каждого из них. : ln -s gmp-6.0.0 gmp; ln -s mpfr-3.1.2 mpfr; ln -s mpc-1.0.2 mpc. Затем я запускаю настройку и сборку GCC, и GCC также собирает эти библиотеки. - person Jonathan Leffler; 30.04.2014

Внутри каталога gcc выполните следующую команду:

./contrib/download_prerequisites

После этого сценария GMP, MPFR и MPC будут готовы к использованию. Продолжайте с ./configure.

person Joe    schedule 19.07.2016
comment
Пытался установить gcc 6.2 на bash на ubuntu на windows, эта команда сработала для меня. Спасибо! - person Emile Vrijdags; 10.12.2016
comment
Спасибо за это. Я застрял на машине без sudo, и это решило мои проблемы. - person Arnon; 09.04.2017
comment
Я искал это весь день. Большое спасибо! - person Stephen C; 23.09.2017
comment
Ты мой герой. - person Daniel Brooks; 16.12.2017
comment
Погоди, это должен быть правильный ответ. Супер звезда. - person evensis; 26.08.2018
comment
Следует отметить одну вещь: эта команда должна быть запущена в исходной корневой папке gcc, она загрузит файлы туда, если запустить ее в другом месте, configure все равно не сможет найти правильные файлы. - person cn123h; 14.04.2019
comment
Спасибо. У меня это работало даже на очень старой CentOS 4, когда я хотел скомпилировать более новый GCC. - person Alexander Samoylov; 02.10.2019
comment
Работает на меня! (на центос) - person Phiber; 05.02.2020
comment
Работал как шарм! - person smmehrab; 18.06.2021

У меня была такая же проблема при попытке установить/скомпилировать GCC 4.8.1. Вот как я решил:

В Debian просто запустите две команды:

apt-get install libmpc-dev
./configure
person Damico    schedule 17.06.2013
comment
В Amazon Linux это sudo yum install libmpc-devel - person Jonathon Hill; 28.12.2013
comment
Centos также требуется sudo yum install libmpc-devel - person bebbo; 18.06.2016
comment
В Ubuntu 16 это sudo apt-get install libmpc-dev - person ; 26.07.2018
comment
В Raspbian 9.13 нет такой вещи, как libmpc-dev - person Nathan B; 22.04.2021

У меня была такая же проблема при компиляции ветки GCC 4.9.

Для систем на базе Red Hat и Fedora выполните следующую команду:

sudo yum install gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel

Это установит библиотеки множественной точности (MP) GNU для целых чисел, чисел с плавающей запятой и комплексных чисел.

person etherice    schedule 14.11.2014

Centos7: sudo yum установить libmpc-devel

person Jiajia Li    schedule 29.10.2019
comment
Молодец, что дал ответ. К вашему сведению, а не просто дать ответ. Другим было бы полезно рассказать, почему вы хотите запустить эту команду и что она должна делать. Также рекомендуется убедиться, что вы ответили на все заданные вопросы. - person Josh; 29.10.2019