From 2203e654b389586650d553251b04544a34f189bf Mon Sep 17 00:00:00 2001 From: Sn4il Date: Mon, 2 Sep 2024 15:54:35 +0300 Subject: LFS 12.2 --- lfs-12.1-sysv/chapter05/gcc-pass1.html | 332 --------------------------------- 1 file changed, 332 deletions(-) delete mode 100644 lfs-12.1-sysv/chapter05/gcc-pass1.html (limited to 'lfs-12.1-sysv/chapter05/gcc-pass1.html') diff --git a/lfs-12.1-sysv/chapter05/gcc-pass1.html b/lfs-12.1-sysv/chapter05/gcc-pass1.html deleted file mode 100644 index ffe0d93..0000000 --- a/lfs-12.1-sysv/chapter05/gcc-pass1.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - 5.3. GCC-13.2.0 - Проход 1 - - - - - - - - -

- 5.3. - GCC-13.2.0 - Проход 1 -

-
-
-

- Пакет GCC содержит коллекцию компиляторов GNU, которая включает - компиляторы C и C++. -

-
-
-
- Приблизительное время сборки: - 3.8 SBU -
-
- Требуемое дисковое - пространство: 4.1 GB -
-
-
-
-
-

- 5.3.1. Установка кросс-пакета GCC -

-

- Для GCC требуются пакеты GMP, MPFR и MPC. Поскольку эти пакеты - могут отсутствовать в дистрибутиве вашего хоста, они будут собраны - с помощью GCC. Распакуйте каждый пакет в исходный каталог GCC и - переименуйте получившиеся каталоги, чтобы процедуры сборки GCC - использовали их автоматически: -

-
- [Примечание] -

- Примечание -

-

- В этой главе часто возникают недоразумения, хотя применяются те - же процедуры, что и в любой другой главе, следуйте инструкции - которую получили ранее (Инструкции по - сборке пакетов). Сначала распакуйте пакет gcc-13.2.0 из - архива, а затем перейдите в созданный каталог. Только после этого - следует приступить к приведенным ниже инструкциям. -

-
-
tar -xf ../mpfr-4.2.1.tar.xz
-mv -v mpfr-4.2.1 mpfr
-tar -xf ../gmp-6.3.0.tar.xz
-mv -v gmp-6.3.0 gmp
-tar -xf ../mpc-1.3.1.tar.gz
-mv -v mpc-1.3.1 mpc
-

- На хостах x86_64 измените имя каталога по умолчанию для 64-битных - библиотек на «lib»: -

-
case $(uname -m) in
-  x86_64)
-    sed -e '/m64=/s/lib64/lib/' \
-        -i.orig gcc/config/i386/t-linux64
- ;;
-esac
-

- В документации к GCC рекомендуется собирать GCC в отдельном - каталоге: -

-
mkdir -v build
-cd       build
-

- Подготовьте GCC к компиляции: -

-
../configure                  \
-    --target=$LFS_TGT         \
-    --prefix=$LFS/tools       \
-    --with-glibc-version=2.39 \
-    --with-sysroot=$LFS       \
-    --with-newlib             \
-    --without-headers         \
-    --enable-default-pie      \
-    --enable-default-ssp      \
-    --disable-nls             \
-    --disable-shared          \
-    --disable-multilib        \
-    --disable-threads         \
-    --disable-libatomic       \
-    --disable-libgomp         \
-    --disable-libquadmath     \
-    --disable-libssp          \
-    --disable-libvtv          \
-    --disable-libstdcxx       \
-    --enable-languages=c,c++
-
-

- Значение параметров настройки: -

-
-
- --with-glibc-version=2.39 -
-
-

- Этот параметр указывает версию Glibc, которая будет - использоваться на целевой системе. Он не имеет отношения к - libc хост-дистрибутива, потому что все, скомпилированное в - этом разделе, будет выполняться в среде chroot, которая - изолирована от libc хост-дистрибутива. -

-
-
- --with-newlib -
-
-

- Поскольку работающая библиотека C еще недоступна, это - гарантирует, что константа inhibit_libc будет определена при - сборке libgcc. Это предотвращает компиляцию любого кода, - требующего поддержки libc. -

-
-
- --without-headers -
-
-

- При создании полного кросс-компилятора GCC требует наличия - стандартных заголовков, совместимых с целевой системой. Для - наших целей эти заголовки не понадобятся. Этот параметр - предотвращает их поиск GCC. -

-
-
- --enable-default-pie и - --enable-default-ssp -
-
-

- Эти параметры позволяют GCC по умолчанию компилировать - программы с некоторые функциями усиливающими безопасность - (более подробная информация о них приведена в примечание о PIE и - SSP в Главе 8). На данном этапе это не является строго - обязательным, поскольку компилятор будет создавать только - временные исполняемые файлы. Но лучше, чтобы временные пакеты - были максимально приближены к тем, что будут в готовой - системе LFS. -

-
-
- --disable-shared -
-
-

- Этот параметр заставляет GCC статически связывать свои - внутренние библиотеки. Он необходим потому что общие - библиотеки требуют Glibc, который еще не установлен в целевой - системе. -

-
-
- --disable-multilib -
-
-

- На x86_64, LFS не поддерживает конфигурацию multilib. Этот - аргумент никак не влияет на работу с архитектурой x86. -

-
-
- --disable-threads, --disable-libatomic, - --disable-libgomp, --disable-libquadmath, --disable-libssp, - --disable-libvtv, --disable-libstdcxx -
-
-

- Эти аргументы отключают поддержку расширений для работы с - многопоточностью, libatomic, libgomp, libquadmath, libssp, - libvtv и стандартной библиотеки C++ соответственно. Эти - функции могут не скомпилироваться при сборке - кросс-компилятора и не нужны для задач кросс-компиляции - временной libc -

-
-
- --enable-languages=c,c++ -
-
-

- Этот параметр обеспечивает сборку только компиляторов C и - C++. Это единственные языки, которые нужны сейчас. -

-
-
-
-

- Скомпилируйте GCC, выполнив: -

-
make
-

- Установите пакет: -

-
make install
-

- Во время сборки GCC установил пару внутренних системных - заголовочных файлов. Обычно один из файлов limits.h, включает соответствующие системные - ограничения limits.h, в данном случае - $LFS/usr/include/limits.h. Однако во - время сборки GCC $LFS/usr/include/limits.h не существует, поэтому - только что установленный внутренний заголовочный файл является - частичным, автономным файлом и не включает расширенные функции - системного файла. Этого достаточно для сборки Glibc, но полный - внутренний заголовочный файл понадобится позже. Создайте полную - версию внутреннего заголовочного файла с помощью команды, - идентичной той, что система сборки GCC использует обычно: -

-
- [Примечание] -

- Примечание -

-

- В приведенной ниже команде показан пример подстановки вложенных - команд, используя два метода: обратные кавычки и конструкцию - $(). Его можно было бы переписать, - используя один и тот же метод для обеих замен, но сделано так, - чтобы продемонстрировать, как их можно использовать одновременно. - В целом метод $() предпочтительнее. -

-
-
cd ..
-cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
-  `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include/limits.h
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.28.2, «Содержимое - пакета GCC.» -

-
-
- - - -- cgit v1.2.3