lfs-ru/chapter06/ncurses.xml

215 lines
9.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-tools-ncurses" role="wrap">
<?dbhtml filename="ncurses.html"?>
<sect1info condition="script">
<productname>ncurses</productname>
<productnumber>&ncurses-version;</productnumber>
<address>&ncurses-url;</address>
</sect1info>
<title>Ncurses-&ncurses-version;</title>
<indexterm zone="ch-tools-ncurses">
<primary sortas="a-Ncurses">Ncurses</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter08/ncurses.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&ncurses-tmp-sbu;</seg>
<seg>&ncurses-tmp-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Установка пакета Ncurses</title>
<para>Во-первых, убедитесь, что <command>gawk</command> найден первым во время настройки:</para>
<screen><userinput remap="pre">sed -i s/mawk// configure</userinput></screen>
<para>Затем выполните следующие команды, чтобы собрать программу
<quote>tic</quote> на хосте сборки:</para>
<screen><userinput remap="pre">mkdir build
pushd build
../configure
make -C include
make -C progs tic
popd</userinput></screen>
<para>Подготовьте Ncurses к компиляции:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(./config.guess) \
--mandir=/usr/share/man \
--with-manpage-format=normal \
--with-shared \
--without-normal \
--with-cxx-shared \
--without-debug \
--without-ada \
--disable-stripping \
--enable-widec</userinput></screen>
<variablelist>
<title>Значение новых параметров настройки:</title>
<varlistentry>
<term><parameter>--with-manpage-format=normal</parameter></term>
<listitem>
<para>Этот аргумент предотвращает установку Ncurses сжатых страниц руководства, это
может произойти, если сам дистрибутив хоста содержит сжатые страницы руководства.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-shared</parameter></term>
<listitem>
<para>Этот аргумент позволяет Ncurses собирать и устанавливать разделяемые библиотеки C.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--without-normal</parameter></term>
<listitem>
<para>Этот аргумент предотвращает сборку и установку статических библиотек C.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--without-debug</parameter></term>
<listitem>
<para>Этот аргумент предотвращает сборку и установку отладочных
библиотек.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-cxx-shared</parameter></term>
<listitem>
<para>Это аргумент позволяет Ncurses собирать и устанавливать общие привязки C++. А также
предотвращает сборку и установку статических привязок C++.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--without-ada</parameter></term>
<listitem>
<para>Этот аргумент гарантирует, что Ncurses будет собран без поддержки компилятора Ada,
который может присутствовать на хосте, но будет недоступен, как только мы войдем
в среду <command>chroot</command>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-stripping</parameter></term>
<listitem>
<para>Этот аргумент не позволяет системе сборки использовать программу
<command>strip</command> с хоста. Использование инструментов
хоста в кросс-компилируемой программе может привести к сбою.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-widec</parameter></term>
<listitem>
<para>Этот аргумент указывает, что необходимо скомпилировать библиотеки
расширенных символов (такие как, <filename
class="libraryfile">libncursesw.so.&ncurses-version;</filename>)
вместо обычных (таких как, <filename class="libraryfile">libncurses.so.&ncurses-version;</filename>).
Эти библиотеки расширенных символов можно использовать как в многобайтовой, так и
традиционной 8-битной локали, в то время как обычные библиотеки корректно работают
только в 8-битных локалях. Библиотеки расширенных символов и обычные совместимы на
уровне исходного кода, но не совместимы в двоичном.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Скомпилируйте пакет:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Установите пакет:</para>
<screen><userinput remap="install">make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install
ln -sv libncursesw.so $LFS/usr/lib/libncurses.so
sed -e 's/^#if.*XOPEN.*$/#if 1/' \
-i $LFS/usr/include/curses.h</userinput></screen>
<!--
<para>Удалите ненужную статическую библиотеку, не обрабатываемую скриптом
<command>configure</command>:</para>
<screen><userinput remap="install">rm -v $LFS/usr/lib/libncurses++w.a</userinput></screen>
-->
<variablelist>
<title>Значение параметров установки:</title>
<varlistentry>
<term><parameter>TIC_PATH=$(pwd)/build/progs/tic</parameter></term>
<listitem>
<para>Нам нужно передать путь до только что собранной программы
<command>tic</command>, которая работает на сборочной машине, чтобы база
данных терминала была создана без ошибок.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>ln -sv libncursesw.so $LFS/usr/lib/libncurses.so</command></term>
<listitem>
<para>Библиотека <filename>libncurses.so</filename> необходима для нескольких
пакетов, которые мы скоро соберем. Мы создаем эту символическую ссылку, чтобы
использовать <filename>libncursesw.so</filename> в качестве замены.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>sed -e 's/^#if.*XOPEN.*$/#if 1/' ...</command></term>
<listitem>
<para>Заголовочный файл <filename>curses.h</filename> содержит определения различных
структур данных Ncurses. С разными определениями макросов препроцессора могут использоваться
два разных набора определений структуры данных: 8-битное определение совместимо с
<filename>libncurses.so</filename>, а определение расширенного набора символов совместимо с
<filename>libncursesw.so </filename>. Поскольку мы используем
<filename>libncursesw.so</filename> вместо <filename>libncurses.so</filename>, отредактируйте
заголовочный файл, чтобы он всегда использовал определение структуры данных расширенного набора
символов, совместимое с <filename>. libncursesw.so</filename>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 role="content">
<title/>
<para>Подробная информация об этом пакете находится в
<xref linkend="contents-ncurses" role="."/></para>
</sect2>
</sect1>