Пакет GMP содержит математические библиотеки. Они содержат полезные функции для арифметики с произвольной точностью.
![[Примечание]](../images/note.png) 
          
            Если вы выполняете сборку для 32-разрядной архитектуры x86, но
            ваш процессор, способен выполнять 64-разрядный код, и вы указали в переменных окружения
            CFLAGS, скрипт configure попытается
            выполнить настройку для 64-разрядной системы и завершится
            ошибкой. Чтобы избежать этого, необходимо вызвать команду
            configure с приведенным ниже параметром
          
ABI=32 ./configure ...![[Примечание]](../images/note.png) 
          
            Настройки 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
![[Важно]](../images/important.png) 
          Набор тестов для GMP в этом разделе считается критически важным. Ни в коем случае не пропускайте его.
Проверьте результаты:
make check 2>&1 | tee gmp-check-log
![[Внимание]](../images/caution.png) 
          
            Код в 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
Выполните очистку после предыдущей сборки:
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
![[Важно]](../images/important.png) 
          Набор тестов для 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