diff --git a/chapter05/binutils-pass1.xml b/chapter05/binutils-pass1.xml
index 1ec69a4..75e953a 100644
--- a/chapter05/binutils-pass1.xml
+++ b/chapter05/binutils-pass1.xml
@@ -90,7 +90,7 @@ cd build
--with-sysroot=$LFS
Для кросс-компляции указывает системе сборки искать в $LFS
- библиотеки целевой системы по мере необходимости..
+ библиотеки целевой системы, если необходимо.
@@ -131,7 +131,7 @@ cd build
- Продолжайте компиляцию пакета:
+ Скомпилируйте пакет:
make
diff --git a/chapter05/gcc-pass1.xml b/chapter05/gcc-pass1.xml
index 3414e85..c017dbe 100644
--- a/chapter05/gcc-pass1.xml
+++ b/chapter05/gcc-pass1.xml
@@ -48,9 +48,9 @@
Распакуйте каждый пакет в исходный каталог GCC и переименуйте получившиеся
каталоги, чтобы процедуры сборки GCC использовали их автоматически:
- В этой главе часто возникают недоразумения. Процедуры такие же,
- как и в любой другой главе, как было описано ранее (). Сначала распакуйте пакет gcc из архива,
+ В этой главе часто возникают недоразумения, хотя применяются те же
+ процедуры, что и в любой другой главе, следуйте инструкции которую получили ранее
+ (). Сначала распакуйте пакет gcc из архива,
а затем перейдите в созданный каталог. Только после этого следует
приступить к приведенным ниже инструкциям.
@@ -85,10 +85,11 @@ cd build
--with-sysroot=$LFS \
--with-newlib \
--without-headers \
+ --enable-default-pie \
+ --enable-default-ssp \
--disable-nls \
--disable-shared \
--disable-multilib \
- --disable-decimal-float \
--disable-threads \
--disable-libatomic \
--disable-libgomp \
@@ -103,7 +104,7 @@ cd build
--with-glibc-version=&glibc-version;
- Этот параметр указывает версию glibc, которая будет использоваться
+ Этот параметр указывает версию Glibc, которая будет использоваться
на целевой системе. Он не имеет отношения к libc хост-дистрибутива, потому
что все, скомпилированное в этом разделе, будет выполняться в среде chroot,
которая изолирована от libc хост-дистрибутива.
@@ -128,11 +129,27 @@ cd build
+
+ --enable-default-pie и
+ --enable-default-ssp
+
+ Эти параметры позволяют GCC по умолчанию компилировать программы
+ с некоторые функциями усиливающими безопасность (более подробная
+ информация о них приведена в в Главе 8).
+ На данном этапе это не является строго обязательным, поскольку компилятор
+ будет создавать только временные исполняемые файлы. Но лучше, чтобы
+ временные пакеты были максимально приближены к тем, что будут в готовой
+ системе LFS.
+
+
+
+
--disable-shared
- Этот параметр заставляет использовать некоторые внутренние структуры
- данных, которые необходимы, но не могут быть обнаружены при сборке кросс-компилятора.
+ Этот параметр заставляет GCC статически связывать свои внутренние
+ библиотеки. Он необходим потому что общие библиотеки требуют Glibc,
+ который еще не установлен в целевой системе.
@@ -145,16 +162,15 @@ cd build
- --disable-decimal-float, --disable-threads,
- --disable-libatomic, --disable-libgomp,
+ --disable-threads,
+ --disable-libatomic, --disable-libgomp,
--disable-libquadmath, --disable-libssp, --disable-libvtv,
--disable-libstdcxx
- Эти аргументы отключают поддержку расширений для работы с десятичным
- числами с плавающей запятой, многопоточностью, libatomic, libgomp, libquadmath,
- libssp, libvtv и стандартной библиотеки C++ соответственно. Эти функции не
- будут компилироваться при сборке кросс-компилятора и не нужны для задач
- кросс-компиляции временной libc
+ Эти аргументы отключают поддержку расширений для работы с многопоточностью,
+ libatomic, libgomp, libquadmath, libssp, libvtv и стандартной библиотеки C++
+ соответственно. Эти функции могут не скомпилироваться при сборке кросс-компилятора
+ и не нужны для задач кросс-компиляции временной libc
@@ -176,16 +192,24 @@ cd build
make install
- Во время сборки GCC установил пару внутренних системных заголовков.
+ Во время сборки GCC установил пару внутренних системных заголовочных файлов.
Обычно один из файлов limits.h, включает соответствующие
системные ограничения limits.h, в данном случае
$LFS/usr/include/limits.h. Однако во время сборки GCC
$LFS/usr/include/limits.h не существует, поэтому только
- что установленный внутренний заголовок является частичным, автономным файлом
- и не включает расширенные функции системного заголовка. Этого достаточно для
- сборки glibc, но полный внутренний заголовок понадобится позже. Создайте
- полную версию внутреннего заголовка с помощью команды, идентичной тому, что
- система сборки GCC делает в обычных обстоятельствах:
+ что установленный внутренний заголовочный файл является частичным, автономным файлом
+ и не включает расширенные функции системного файла. Этого достаточно для
+ сборки Glibc, но полный внутренний заголовочный файл понадобится позже. Создайте
+ полную версию внутреннего заголовочного файла с помощью команды, идентичной той, что
+ система сборки GCC использует в обычных обстоятельствах:
+
+
+ В приведенной ниже команде показан пример подстановки вложенных команд,
+ используя два метода: обратные кавычки и конструкцию $().
+ Его можно было бы переписать, используя один и тот же метод для обеих замен,
+ но сделано так, чтобы продемонстрировать, как их можно использовать одновременно.
+ В целом метод $() предпочтительнее.
+
cd ..
cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \