Обновление GCC — версия GMP вызывает проблемы

Я пытаюсь обновить GCC на определенной машине с Linux до версии, для которой нет доступных пакетов.

Я запускаю скрипт configure, и он жалуется на версию GMP:

# ../gcc/configure
checking build system type... i686-pc-linux-gnu
[snip]
checking for the correct version of gmp.h... no
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ 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.

Однако, когда я проверяю gmp.h, он показывает:

/* Major version number is the value of __GNU_MP__ too, above and in mp.h. */
#define __GNU_MP_VERSION 4
#define __GNU_MP_VERSION_MINOR 2
#define __GNU_MP_VERSION_PATCHLEVEL 1

и RPM сообщает следующее:

# rpm -q --qf "%{VERSION}\n" gmp
4.2.1
# rpm -q --qf "%{VERSION}\n" gmp-devel
4.2.1

поэтому и библиотека, и заголовки кажутся мне правильной версией (как ни странно, нумерация файла .so для libgmp, похоже, не имеет ничего общего с номером версии... который отображается как

libgmp.so -> libgmp.so.3.4.1

Кто-нибудь знает, почему это может не сработать? Это единственные два пакета gmp, установленные на этом компьютере, и они находятся в стандартных местах /usr/include и /usr/lib, поэтому они уже должны быть в пути поиска.


person jam    schedule 11.05.2016    source источник
comment
Было бы проще, если бы вы заменили машину, версию и т. д. на актуальную информацию... Нет, числа в libsmurf.X.Y.Z не должны иметь никакого отношения к версии пакета. Вы должны проверить config.log. Сообщение об ошибке будет таким же, если компиляция по какой-либо причине не удалась или если версия неверна.   -  person Marc Glisse    schedule 11.05.2016


Ответы (2)


Прочтите Установка GCC:

Сложный способ, который не рекомендуется, — загрузить исходники для GMP, MPFR и MPC, затем настроить и установить каждый из них в нестандартных местах, затем настроить GCC с --with-gmp=/some/silly/path /gmp --with-mpfr=/some/silly/path/mpfr --with-mpc=/some/silly/path/mpc, затем необходимо установить LD_LIBRARY_PATH=/some/silly/path/gmp:/some/ silly/path/mpfr:/some/silly/path/mpc/lib в вашей среде навсегда. Это глупо и вызывает серьезные проблемы у тех, кто не понимает, как динамические компоновщики находят библиотеки во время выполнения. Не делайте этого. Если при сборке GCC происходит сбой при использовании любого из параметров --with-gmp, --with-mpfr или --with-mpc, то вам, вероятно, не следует их использовать.

Просто запустите ./contrib/download_prerequisites и сэкономьте себе много времени и усилий.

person user6320439    schedule 11.05.2016
comment
Я не могу запустить download_prerequisites на этом компьютере, потому что он не подключен к сети. Я просмотрел страницу «Установка GCC», там написано For RPM-based systems, including Fedora and SUSE, you should install gmp-devel, mpfr-devel and libmpc-devel (or mpc-devel on SUSE) packages. The packages will install the libraries and headers in standard system directories so they can be found automatically when building GCC, что, я думаю, применимо к моей ситуации, и поэтому мне не нужен сложный путь. Только он видимо не правильно подбирает версию gmp.. - person jam; 11.05.2016

Оказывается, что «Создание GCC требует GMP 4.2+» недостаточно подробно. Копаясь в configure, он фактически проверяет:

  #if GCC_GMP_VERSION < GCC_GMP_VERSION_NUM(4,2,3)
  choke me
  #endif

то есть GMP 4.2 .3 или выше, поэтому мой 4.2.1 не подходил.

person jam    schedule 11.05.2016