diff --git a/chapter08/libffi.xml b/chapter08/libffi.xml index 6005ab4..2a25f98 100644 --- a/chapter08/libffi.xml +++ b/chapter08/libffi.xml @@ -26,6 +26,11 @@ Библиотека Libffi предоставляет переносимый высокоуровневый программный интерфейс для различных соглашений о вызовах. Это позволяет программисту вызывать любую функцию, указанную в описании интерфейса вызова во время выполнения. + + FFI расшифровывается как интерфейс внешних функций. FFI позволяет программе, + написанной на одном языке, вызывать программу, написанную на другом языке. В + частности, Libffi может обеспечить связь между интерпретатором, таким как Perl или + Python, и подпрограммами общей библиотеки, написанными на C или C++. &buildtime; @@ -43,19 +48,19 @@ Установка пакета Libffi - Подобно GMP, libffi собирается с оптимизацией, специфичной для используемого + Как и GMP, Libffi собирается с учетом оптимизаций, специфичных для используемого процессора. При сборке для другой системы измените значение параметра --with-gcc-arch= в следующей команде на имя архитектуры, полностью реализованной процессором в этой системе. Если этого не сделать, - все приложения, ссылающиеся на libffi, будут выдавать ошибку Illegal Operation Errors. + все приложения, ссылающиеся на libffi, + будут вызывать ошибку Illegal Operation - недопустимая операция. - Подготовьте libffi к компиляции: + Подготовьте Libffi к компиляции: ./configure --prefix=/usr \ --disable-static \ - --with-gcc-arch=native \ - --disable-exec-static-tramp + --with-gcc-arch=native Значение параметров configure: @@ -63,26 +68,15 @@ --with-gcc-arch=native - Убедитесь, что GCC оптимизируется для текущей системы. Если значение - не указано, то архитектура системы угадывается, и созданный код может - быть неправильным для некоторых систем. Если созданный код будет скопирован - из родной системы в менее мощную, используйте менее мощную систему в качестве - параметра. Дополнительные сведения об альтернативных типах систем см. в + Убедитесь, что GCC оптимизируется для текущей системы. Если значение + не указано, то архитектура системы угадывается и сгенерированный код может + быть неправильным. Если сгенерированный код будет скопирован из родной + системы в менее мощную, используйте архитектуру менее мощной системы в качестве + параметра. Дополнительные сведения об альтернативных типах систем смотрите в + описании параметров x86 в руководстве GCC. - - - - --disable-exec-static-tramp - - Отключить поддержку предотвращения наращивания стека. Это новая функция - безопасности в libffi, но некоторые пакеты BLFS (в частности, - GJS) не были адаптированы для работы с ней - - - Скомпилируйте пакет: @@ -118,7 +112,7 @@ libffi - содержит внешний интерфейс для API-функций + Содержит внешний интерфейс для API-функций libffi diff --git a/chapter08/libtool.xml b/chapter08/libtool.xml index 1eb755f..abe9d88 100644 --- a/chapter08/libtool.xml +++ b/chapter08/libtool.xml @@ -23,9 +23,9 @@ - <para>Пакет Libtool содержит сценарий поддержки универсальной библиотеки GNU. - Он преобразует сложный механизм использования общих библиотек в согласованный - переносимый интерфейс.</para> + <para>Пакет Libtool содержит сценарий поддержки универсальной библиотеки GNU. + Это упрощает использование общих библиотек благодаря согласованному переносимому + интерфейсу.</para> <segmentedlist> <segtitle>&buildtime;</segtitle> @@ -52,16 +52,17 @@ <para>Чтобы протестировать пакет<!--(about 11.0 SBU)-->, выполните:</para> -<screen><userinput remap="test">make check</userinput></screen> +<screen><userinput remap="test">make -k check</userinput></screen> - <note><para>Время тестирования libtool может быть значительно сокращено в системе + <note><para>Время тестирования Libtool может быть значительно сокращено в системе с несколькими ядрами. Для этого добавьте <command>TESTSUITEFLAGS=-j<N></command> к строке выше. Например, использование -j4 может сократить время тестирования более чем на 60 процентов.</para></note> <para>Известно, что пять тестов в среде сборки LFS завершаются неудачно из-за - круговой зависимости, но все тесты проходят успешно, если они повторно запускаются - после установки automake.</para> + циклической зависимости, но эти тесты проходят успешно, если запустить их повторно + после установки automake. Кроме того, в grep-3.8 два теста вызовут предупреждение + для регулярных выражений, несовместимых с POSIX и завершатся с ошибкой.</para> <para>Установите пакет:</para> @@ -121,7 +122,7 @@ <varlistentry id="libltdl"> <term><filename class="libraryfile">libltdl</filename></term> <listitem> - <para>Скрывает различные трудности, связанные с динамически загружаемыми библиотеками</para> + <para>Скрывает различные проблемы, связанные с открытием динамически загружаемых библиотек</para> <indexterm zone="ch-system-libtool libltdl"> <primary sortas="c-libltdl">libltdl</primary> </indexterm> diff --git a/chapter08/m4.xml b/chapter08/m4.xml index 83d68c7..fd20704 100644 --- a/chapter08/m4.xml +++ b/chapter08/m4.xml @@ -81,7 +81,7 @@ echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h</userinput></screen> <varlistentry id="m4"> <!-- Don't remove the extra space, it prevet a FOP warning. --> - <term><command>m4 </command></term> + <term><command>m4</command></term> <listitem> <para>Копирует указанные файлы, одновременно расширяя содержащиеся в них макросы. Эти макросы являются либо встроенными, либо определяемыми @@ -89,7 +89,7 @@ echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h</userinput></screen> выполнения макросов, <command>m4</command> имеет встроенные функции для включения указанных файлов, выполнения команд Unix, выполнения целочисленной арифметики, манипулирования текстом, рекурсии и т.д. Программа <command>m4</command> - может использоваться либо как интерфейс компилятора, либо как самостоятельный + может использоваться либо как интерфейс к компилятору, либо как самостоятельный макропроцессор</para> <indexterm zone="ch-system-m4 m4"> <primary sortas="b-m4">m4</primary> diff --git a/chapter08/make.xml b/chapter08/make.xml index 772a4a3..34589b1 100644 --- a/chapter08/make.xml +++ b/chapter08/make.xml @@ -39,11 +39,13 @@ <sect2 role="installation"> <title>Установка пакета Make - + Во-первых, исправьте некоторые проблемы, выявленные разработчиками: + +sed -e '/ifdef SIGPIPE/,+2 d' \ + -e '/undef FATAL_SIG/i FATAL_SIG (SIGPIPE);' \ + -i src/main.c + Подготовьте Make к компиляции: ./configure --prefix=/usr @@ -82,7 +84,8 @@ make - Автоматически определяет, какие части пакета необходимо (пере)компилировать и запускает соответствующие команды. + Автоматически определяет, какие части пакета необходимо (пере)компилировать + и запускает соответствующие команды. make diff --git a/chapter08/man-db.xml b/chapter08/man-db.xml index ef55e53..b85d875 100644 --- a/chapter08/man-db.xml +++ b/chapter08/man-db.xml @@ -77,7 +77,7 @@ --enable-cache-owner=bin - Устаналивает владельцем файлов общесистемного кеша пользователя + Изменяет владельца файлов общесистемного кеша на пользователя bin. diff --git a/chapter08/man-pages.xml b/chapter08/man-pages.xml index ec1c710..8a0561d 100644 --- a/chapter08/man-pages.xml +++ b/chapter08/man-pages.xml @@ -23,7 +23,7 @@ - <para>Пакет Man-pages содержит более 2,200 справочных руководств.</para> + <para>Пакет Man-pages содержит более 2400 справочных руководств.</para> <segmentedlist> <segtitle>&buildtime;</segtitle> diff --git a/chapter08/markupsafe.xml b/chapter08/markupsafe.xml index d78d9e3..5d6296a 100644 --- a/chapter08/markupsafe.xml +++ b/chapter08/markupsafe.xml @@ -43,7 +43,7 @@ <screen><userinput remap="make">pip3 wheel -w dist --no-build-isolation --no-deps $PWD</userinput></screen> - <para>С этим пакетом не поставляется набор тестов.</para> + <para>С этим пакетом не поставляется тестов.</para> <para>Установите пакет:</para> diff --git a/chapter08/meson.xml b/chapter08/meson.xml index 96632d8..46a8ee2 100644 --- a/chapter08/meson.xml +++ b/chapter08/meson.xml @@ -23,8 +23,8 @@ <sect2 role="package"> <title/> - <para>Meson — это система сборки с открытым исходным кодом, призванная быть - чрезвычайно быстрой и максимально удобной для пользователя.</para> + <para>Meson — это система сборки с открытым исходным кодом, разработанная таким + образом, чтобы быть очень быстрой и максимально удобной для пользователя.</para> <segmentedlist> <segtitle>&buildtime;</segtitle> @@ -36,10 +36,10 @@ </segmentedlist> <tip revision="sysv"> - <para>Этот раздел не является строго обязательным, если LFS не использует - systemd. С другой стороны, meson/ninja - это мощная система сборки, - которая, скорее всего, будет использоваться все чаще и чаще. Meson необходим для - нескольких пакетов в <ulink url="&blfs-book;">книге BLFS</ulink>.</para> + <para>Этот раздел не обязателен, если LFS не использует systemd. С другой стороны, + Meson вместе с Ninja составляет мощную комбинацию систем сборки, которая, вероятно, + будет использоваться все чаще и чаще. Meson необходим для нескольких пакетов + в <ulink url="&blfs-book;">книге BLFS</ulink>.</para> </tip> </sect2> @@ -69,7 +69,7 @@ install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/ <varlistentry> <term><parameter>-w dist</parameter></term> <listitem> - <para> Поместить собранный wheels в каталог + <para>Помещает собранный wheels в каталог <filename class='directory'>dist</filename>.</para> </listitem> </varlistentry> @@ -77,7 +77,7 @@ install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/ <varlistentry> <term><parameter>--find-links dist</parameter></term> <listitem> - <para>Установить wheels из каталога + <para>Устанавливает wheels из каталога <filename class='directory'>dist</filename>.</para> </listitem> </varlistentry> diff --git a/chapter08/mpfr.xml b/chapter08/mpfr.xml index a3ee7de..ee39dfd 100644 --- a/chapter08/mpfr.xml +++ b/chapter08/mpfr.xml @@ -40,6 +40,20 @@ <sect2 role="installation"> <title>Установка пакета MPFR + + Исправьте тестовый пример, приводящий к ошибке в старых версиях Glibc: + +sed -e 's/+01,234,567/+1,234,567 /' \ + -e 's/13.10Pd/13Pd/' \ + -i tests/tsprintf.c + Подготовьте MPFR к компиляции: ./configure --prefix=/usr \ @@ -57,7 +71,7 @@ make html случае не пропускайте его. - Выполните тестирование и убедитесь, что все тесты пройдены: + Выполните тестирование и убедитесь, что все 197 тестов пройдены: make check diff --git a/chapter08/ncurses.xml b/chapter08/ncurses.xml index aaf2938..8e33c2d 100644 --- a/chapter08/ncurses.xml +++ b/chapter08/ncurses.xml @@ -129,9 +129,7 @@ libncursesw.so.&ncurses-version;. Это может привести к сбою процесса оболочки, который использует код и данные из файла библиотеки. Установите пакет с помощью DESTDIR и правильно - замените файл библиотеки с помощью команды install. Ненужный - статический архив, который не обрабатывается configure, также - удаляется: + замените файл библиотеки с помощью команды install. make DESTDIR=$PWD/dest install install -vm755 dest/usr/lib/libncursesw.so.&ncurses-version; /usr/lib @@ -211,6 +209,7 @@ cp -av lib/lib*.so.5* /usr/lib libformw.so, libmenuw.so, libncursesw.so, + libncurses++w.so, libpanelw.so, и их аналоги без "w" в именах библиотек. /usr/share/tabset, @@ -363,6 +362,16 @@ cp -av lib/lib*.so.5* /usr/lib + + libncurses++w + + Содержит функции связывания C++ с другими библиотеками в пакете + + libncurses++w + + + + libformw diff --git a/chapter08/ninja.xml b/chapter08/ninja.xml index 2f32dd6..26b63a6 100644 --- a/chapter08/ninja.xml +++ b/chapter08/ninja.xml @@ -36,10 +36,10 @@ - Этот раздел необязателен, если LFS не использует systemd. - С другой стороны, связка ninja/meson - это мощная система сборки, - которая, скорее всего, будет использоваться все чаще и чаще. Она - необходима для нескольких пакетов из книги BLFS. + Этот раздел не обязателен, если LFS не использует systemd. С другой стороны, + Ninja вместе с Meson составляет мощную комбинацию систем сборки, которая, вероятно, + будет использоваться все чаще и чаще. Ninja требуется для нескольких пакетов + в книге BLFS. @@ -47,12 +47,12 @@ Установка пакета Ninja - При работе ninja обычно запускает максимальное количество процессов - параллельно. По умолчанию это количество ядер в системе плюс два. В некоторых - случаях это может привести к перегреву процессора или к нехватке памяти в - системе. При запуске из командной строки передача параметра -jN ограничит - количество параллельных процессов, у некоторых пакетов запуск ninja встроен - и параметр -j не передается. + При запуске ninja обычно использует максимальное количество + процессов параллельно. По умолчанию это количество ядер в системе плюс два. В некоторых + случаях это может привести к перегреву процессора или нехватке памяти в системе. + Когда ninja вызывается из командной строки, передача параметра -jN + ограничит количество параллельных процессов. Некоторые пакеты встраивают выполнение + ninja и параметр -j не передается. Использование приведенной ниже необязательной процедуры позволяет пользователю ограничить количество параллельных процессов с помощью переменной @@ -60,9 +60,10 @@ export NINJAJOBS=4 - ограничит ninja четырьмя параллельными процессами. + ограничит ninja четырьмя параллельными процессами. - По желанию добавьте возможность использовать переменную окружения NINJAJOBS, запустив: + По желанию, добавьте возможность использовать переменную окружения NINJAJOBS, выполнив + следующую команду: sed -i '/int Guess/a \ int j = 0;\ @@ -81,7 +82,7 @@ --bootstrap - Этот параметр перестраивает ninja под текущую систему. + Этот параметр перестраивает Ninja под текущую систему.