Пакет 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
Выполните очистку после предыдущей сборки:
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