From c486df5d7653b66f269ab10d8079ca374414b36b Mon Sep 17 00:00:00 2001 From: Vladimir Pertsev <2363951+Poltern@users.noreply.github.com> Date: Mon, 23 May 2022 03:25:27 +0500 Subject: [PATCH] =?UTF-8?q?Added=20Introduction,=20M4,=20Ncurses=20(=D0=94?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D1=8B:=20=D0=92=D0=B2=D0=B5?= =?UTF-8?q?=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5,=20M4,=20Ncurses)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chapter06/introduction.xml | 29 +++++++ chapter06/m4.xml | 74 ++++++++++++++++ chapter06/ncurses.xml | 169 +++++++++++++++++++++++++++++++++++++ 3 files changed, 272 insertions(+) create mode 100644 chapter06/introduction.xml create mode 100644 chapter06/m4.xml create mode 100644 chapter06/ncurses.xml diff --git a/chapter06/introduction.xml b/chapter06/introduction.xml new file mode 100644 index 0000000..66a9c71 --- /dev/null +++ b/chapter06/introduction.xml @@ -0,0 +1,29 @@ + + + %general-entities; +]> + + + + + Введение + + В этой главе рассказывается, как выполнить кросс-компиляцию базовых + утилит с использованием только что собранного кросс-тулчейна. Эти утилиты + установлены в свое конечное местоположение, но пока не могут быть использованы. + Выполненяемые инструкции по-прежнему зависят от инструментария хоста. Тем не менее, + установленные библиотеки используются при компоновке. + + Использование утилит станет возможным в следующей главе после входа в + среду chroot. Все пакеты из этой главы, должны быть + собраны до того, как мы это сделаем. Поэтому пока наша система зависима от хост-системы. + + Еще раз напомним, что неправильная настройка LFS вместе со + сборкой от root может сделать ваш + компьютер непригодным для использования. Всю эту главу нужно выполнить от имени пользователя lfs, в его рабочем окружении, как описано в + . + + diff --git a/chapter06/m4.xml b/chapter06/m4.xml new file mode 100644 index 0000000..ecb7550 --- /dev/null +++ b/chapter06/m4.xml @@ -0,0 +1,74 @@ + + + %general-entities; +]> + + + + + + m4 + &m4-version; +
&m4-url;
+
+ + M4-&m4-version; + + + M4 + tools + + + + + + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" + href="../chapter08/m4.xml" + xpointer="xpointer(/sect1/sect2[1]/para[1])"/> + + <segmentedlist> + <segtitle>&buildtime;</segtitle> + <segtitle>&diskspace;</segtitle> + + <seglistitem> + <seg>&m4-tmp-sbu;</seg> + <seg>&m4-tmp-du;</seg> + </seglistitem> + </segmentedlist> + + </sect2> + + <sect2 role="installation"> + <title>Установка пакета M4 + + Подготовьте пакет M4 к компиляции: + +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) + + Скомпилируйте пакет: + +make + + Установите пакет: + +make DESTDIR=$LFS install + + + + + + <para>Подробная информация об этом пакете находится в + <xref linkend="contents-m4" role="."/></para> + + </sect2> + +</sect1> diff --git a/chapter06/ncurses.xml b/chapter06/ncurses.xml new file mode 100644 index 0000000..70dbd16 --- /dev/null +++ b/chapter06/ncurses.xml @@ -0,0 +1,169 @@ +<?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; + + + Ncurses + tools + + + + + + <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 + + Во-первых, убедитесь, что gawk найден первым во время настройки: + +sed -i s/mawk// configure + + Затем выполните следующие команды, чтобы собрать программу + tic на хосте сборки: + +mkdir build +pushd build + ../configure + make -C include + make -C progs tic +popd + + Подготовьте Ncurses к компиляции: + +./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(./config.guess) \ + --mandir=/usr/share/man \ + --with-manpage-format=normal \ + --with-shared \ + --without-debug \ + --without-ada \ + --without-normal \ + --disable-stripping \ + --enable-widec + + + Значение новых параметров настройки: + + + --with-manpage-format=normal + + Этот аргумент предотвращает установку Ncurses сжатых страниц руководства, что + может произойти, если сам дистрибутив хоста содержит сжатые страницы руководства. + + + + + --without-ada + + Этот аргумент гарантирует, что Ncurses будет собран без поддержки компилятора Ada, + который может присутствовать на хосте, но будет недоступен, как только мы войдем + в среду chroot. + + + + + --disable-stripping + + Этот аргумент не позволяет системе сборки удалять пакеты с + помощью программы strip с хоста. Использование инструментов + хоста в кросс-компилируемой программе может привести к сбою. + + + + + --enable-widec + + Этот аргумент указывает, что необходимо скомпилировать библиотеки + расширенных символов (такие как, libncursesw.so.&ncurses-version;) + вместо обычных (таких как, libncurses.so.&ncurses-version;). + Эти библиотеки расширенных символов можно использовать как в многобайтовой, так и + традиционной 8-битной локали, в то время как обычные библиотеки корректно работают + только в 8-битных локалях. Библиотеки расширенных символов и обычные совместимы на + уровне исходного кода, но не совместимы в двоичном. + + + + + --without-normal + + Этот аргумент отключает сборку и установку большинства статических библиотек + + + + + + + Скомпилируйте пакет: + +make + + Установите пакет: + +make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install +echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so + + + Значение параметров установки: + + + TIC_PATH=$(pwd)/build/progs/tic + + Нам нужно передать путь только что собранного tic, + способного работать на машине сборки, чтобы база данных терминала была + создана без ошибок. + + + + + echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so + + Библиотека libncurses.so необходима для нескольких + пакетов, которые мы скоро соберем. Мы создадим небольшой скрипт компоновщика, как это делается поясняется в . + + + + + + + + + + + <para>Подробная информация об этом пакете находится в + <xref linkend="contents-ncurses" role="."/></para> + + </sect2> + +</sect1>