lfs-ru/chapter08/gmp.xml
2022-06-08 01:41:46 +05:00

163 lines
6.6 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-gmp" role="wrap">
<?dbhtml filename="gmp.html"?>
<sect1info condition="script">
<productname>gmp</productname>
<productnumber>&gmp-version;</productnumber>
<address>&gmp-url;</address>
</sect1info>
<title>GMP-&gmp-version;</title>
<indexterm zone="ch-system-gmp">
<primary sortas="a-GMP">GMP</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>Пакет GMP содержит математические библиотеки. Они содержат полезные функции
для арифметики с произвольной точностью.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&gmp-fin-sbu;</seg>
<seg>&gmp-fin-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Установка пакета GMP</title>
<note>
<para>Если вы выполняете сборку для 32-разрядной архитектуры x86, но ваш
процессор, способен выполнять 64-разрядный код, <emphasis>и</emphasis> вы
указали в переменных окружения <envar>CFLAGS</envar>, скрипт configure
попытается выполнить настройку для 64-разрядной системы и завершится ошибкой.
Чтобы избежать этого, необходимо вызвать команду configure с приведенным ниже параметром
<screen role="nodump"><userinput><parameter>ABI=32</parameter> ./configure ...</userinput></screen></para>
</note>
<note>
<para>Настройки GMP по умолчанию собирают библиотеки, оптимизированные для
процессора хоста. Если требуются библиотеки, подходящие для процессоров с
меньшей производительностью, чем у процессора хоста, можно собрать
общие библиотеки, выполнив следующие команды:
<screen role="nodump"><userinput>cp -v configfsf.guess config.guess
cp -v configfsf.sub config.sub</userinput></screen></para>
</note>
<para>Подготовьте GMP к компиляции:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \
--enable-cxx \
--disable-static \
--docdir=/usr/share/doc/gmp-&gmp-version;</userinput></screen>
<variablelist>
<title>Значение новых параметров настройки:</title>
<varlistentry>
<term><parameter>--enable-cxx</parameter></term>
<listitem>
<para>Этот параметр включает поддержку C++</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--docdir=/usr/share/doc/gmp-&gmp-version;</parameter></term>
<listitem>
<para>Эта переменная указывает местоположение для документации.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Скомпилируйте пакет и сгенерируйте HTML-документацию:</para>
<screen><userinput remap="make">make
make html</userinput></screen>
<important>
<para>Набор тестов для GMP в этом разделе считается критически важным.
Ни в коем случае не пропускайте его.</para>
</important>
<para>Проверьте результаты:</para>
<screen><userinput remap="test">make check 2>&amp;1 | tee gmp-check-log</userinput></screen>
<caution><para>Код в GMP сильно оптимизирован для процессора, на котором он
собран. Иногда код, определяющий процессор, неверно определяет возможности
системы, и в тестах или других приложениях, использующих библиотеки gmp, возникают
ошибки с сообщением "Illegal instruction". В этом случае gmp следует переконфигурировать
с параметром --build=x86_64-pc-linux-gnu и пересобрать.</para></caution>
<para>Убедитесь, что все 197 тестов в наборе тестов пройдены. Проверьте
результат, выполнив следующую команду:</para>
<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>
<para>Установите пакет и его документацию:</para>
<screen><userinput remap="install">make install
make install-html</userinput></screen>
</sect2>
<sect2 id="contents-gmp" role="content">
<title>Содержимое пакета GMP</title>
<segmentedlist>
<segtitle>Установленные библиотеки</segtitle>
<segtitle>Каталог установки</segtitle>
<seglistitem>
<seg>libgmp.so и libgmpxx.so</seg>
<seg>/usr/share/doc/gmp-&gmp-version;</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Краткое описание</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="libgmp">
<term><filename class="libraryfile">libgmp</filename></term>
<listitem>
<para>Содержит точные математические функции</para>
<indexterm zone="ch-system-gmp libgmp">
<primary sortas="c-libgmp">libgmp</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libgmpxx">
<term><filename class="libraryfile">libgmpxx</filename></term>
<listitem>
<para>Содержит точные математические функции C++</para>
<indexterm zone="ch-system-gmp libgmpxx">
<primary sortas="c-libgmpxx">libgmpxx</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>