<?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-ch6-sbu;</seg>
        <seg>&gmp-ch6-du;</seg>
      </seglistitem>
    </segmentedlist>

  </sect2>

  <sect2 role="installation">
    <title>安装 GMP</title>

    <note>
      <!--para>If you are building for 32-bit x86, but you have a CPU which is
      capable of running 64-bit code <emphasis>and</emphasis> you have specified
      <envar>CFLAGS</envar> in the environment, the configure script will
      attempt to configure for 64-bits and fail.
	  Avoid this by invoking the configure command below with -->

      <para>如果您在为 32 位 x86 构建 LFS ，但您的 CPU 能够运行
		  64 位代码， <emphasis>而且</emphasis> 您指定了
		  <envar>CFLAGS</envar> 环境变量，配置脚本会试图为 64 位 CPU
		  进行配置并且失败。为了避免这个问题，像下面这样执行 configure
		  命令：
<screen role="nodump"><userinput><parameter>ABI=32</parameter> ./configure ...</userinput></screen></para>
    </note>

    <note>
      <!--para>The default settings of GMP produce libraries optimized for
      the host processor.  If libraries suitable for processors less
      capable than the host's CPU are desired, generic libraries can be 
	  created by running the following:-->
	  <para>GMP 的默认设定会生成为本机处理器优化的库。
		  如果您希望获得适合功能不如本机的 CPU 的库，
		  执行以下命令，以生成通用库：

<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>The code in gmp is highly optimized for the processor where
    it is built. Occasionally, the code that detects the processor misidentifies
    the system capabilities and there will be errors in the tests or other
    applications using the gmp libraries with the message "Illegal
    instruction".  In this case, gmp should be reconfigured with the option
	build=x86_64-unknown-linux-gnu and rebuilt.</para-->
	  <para>GMP 中的代码是针对本机处理器高度优化的。
		  在偶然情况下，检测处理器的代码会错误识别 CPU 的功能，
		  导致测试套件或使用 GMP 的其他程序输出消息
		  <quote>Illegal instruction</quote> （非法指令）。
		  如果发生这种情况，需要加入选项
		  --build=x86_64-unknown-linux-gnu 并重新构建 GMP 。</para>
	</caution>

    <!--para>Ensure that all 190 tests in the test suite passed.
    Check the results by issuing the following command:</para-->
    <para>务必确认测试套件中的全部 190 个测试都被通过。
		运行以下命令检验结果：</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>
