8.20. GMP-6.3.0

Пакет GMP содержит математические библиотеки. Они содержат полезные функции для арифметики с произвольной точностью.

Приблизительное время сборки: 0.3 SBU
Требуемое дисковое пространство: 54 MB

8.20.1. Установка пакета GMP

[Примечание]

Примечание

Если вы выполняете сборку для 32-разрядной архитектуры x86, но ваш процессор, способен выполнять 64-разрядный код, и вы указали в переменных окружения CFLAGS, скрипт configure попытается выполнить настройку для 64-разрядной системы и завершится ошибкой. Чтобы избежать этого, необходимо вызвать команду configure с приведенным ниже параметром

ABI=32 ./configure ...
[Примечание]

Примечание

Настройки GMP по умолчанию собирают библиотеки, оптимизированные для процессора хоста. Если требуются библиотеки, подходящие для процессоров с меньшей производительностью, чем у процессора хоста, можно собрать общие библиотеки, добавив параметр --host=none-linux-gnu в команде configure.

Подготовьте GMP к компиляции:

./configure --prefix=/usr    \
            --enable-cxx     \
            --disable-static \
            --docdir=/usr/share/doc/gmp-6.3.0

Значение новых параметров настройки:

--enable-cxx

Этот параметр включает поддержку C++

--docdir=/usr/share/doc/gmp-6.3.0

Эта переменная указывает местоположение для документации.

Скомпилируйте пакет и сгенерируйте HTML-документацию:

make
make html
[Важно]

Важно

Набор тестов для GMP в этом разделе считается критически важным. Ни в коем случае не пропускайте его.

Проверьте результаты:

make check 2>&1 | tee gmp-check-log
[Внимание]

Внимание

Код в GMP сильно оптимизирован для процессора, на котором он собран. Иногда код, определяющий процессор, неверно определяет возможности системы, и в тестах или других приложениях, использующих библиотеки gmp, возникают ошибки с сообщением Illegal instruction. В этом случае gmp следует переконфигурировать с параметром --host=none-linux-gnu и пересобрать.

Убедитесь, что все 199 тестов в наборе пройдены. Проверьте результат, выполнив следующую команду:

awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log

Установите пакет и его документацию:

make install
make install-html

8.20.2. Установка GMP - 32-битная версия

Выполните очистку после предыдущей сборки:

make distclean

Универсальные библиотеки можно создать, выполнив следующие действия:

cp -v configfsf.guess config.guess
cp -v configfsf.sub   config.sub

Подготовьте GMP к компиляции:

ABI="32" \
CFLAGS="-m32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=i686" \
CXXFLAGS="$CFLAGS" \
PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
./configure                      \
    --host=i686-pc-linux-gnu     \
    --prefix=/usr                \
    --disable-static             \
    --enable-cxx                 \
    --libdir=/usr/lib32          \
    --includedir=/usr/include/m32/gmp

Значение новых параметров настройки:

--includedir=/usr/include/m32/gmp

Некоторые определения в gmp.h различаются в зависимости от архитектуры, но имеют одно и то же имя. Поэтому заголовки должны быть отделены друг от друга.

Скомпилируйте пакет:

sed -i 's/$(exec_prefix)\/include/$\(includedir\)/' Makefile
make
[Важно]

Важно

Набор тестов для GMP, приведенный в этом разделе, считается критически важным. Не пропускайте его ни при каких обстоятельствах.

Проверьте результаты:

make check 2>&1 | tee gmp-check-log

Убедитесь, что все 199 тестов в наборе пройдены. Проверьте результат, выполнив следующую команду:

awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log

Установите пакет:

make DESTDIR=$PWD/DESTDIR install
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
cp -Rv DESTDIR/usr/include/m32/* /usr/include/m32/
rm -rf DESTDIR

8.20.3. Содержимое пакета GMP

Установленные библиотеки: libgmp.so и libgmpxx.so
Созданные каталоги: /usr/share/doc/gmp-6.3.0

Краткое описание

libgmp

Содержит точные математические функции

libgmpxx

Содержит точные математические функции C++