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/chapter06/gcc-pass2.html | 273 --------------------------------- 1 file changed, 273 deletions(-) delete mode 100644 lfs-12.1-sysv/chapter06/gcc-pass2.html (limited to 'lfs-12.1-sysv/chapter06/gcc-pass2.html') diff --git a/lfs-12.1-sysv/chapter06/gcc-pass2.html b/lfs-12.1-sysv/chapter06/gcc-pass2.html deleted file mode 100644 index a406e4d..0000000 --- a/lfs-12.1-sysv/chapter06/gcc-pass2.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - 6.18. GCC-13.2.0 - Проход 2 - - - - - - - - -

- 6.18. - GCC-13.2.0 - Проход 2 -

-
-
-

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

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

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

-

- Как и при первой сборке GCC, требуются пакеты GMP, MPFR и MPC. - Распакуйте архивы и переименуйте каталоги: -

-
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
-

- Переопределите правила сборки заголовочных файлов libgcc и - libstdc++, чтобы разрешить создание этих библиотек с поддержкой - потоков POSIX: -

-
sed '/thread_header =/s/@.*@/gthr-posix.h/' \
-    -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
-

- Снова создайте отдельный каталог сборки: -

-
mkdir -v build
-cd       build
-

- Перед началом сборки GCC не забудьте отключить все переменные - среды, которые переопределяют флаги оптимизации по умолчанию. -

-

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

-
../configure                                       \
-    --build=$(../config.guess)                     \
-    --host=$LFS_TGT                                \
-    --target=$LFS_TGT                              \
-    LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc      \
-    --prefix=/usr                                  \
-    --with-build-sysroot=$LFS                      \
-    --enable-default-pie                           \
-    --enable-default-ssp                           \
-    --disable-nls                                  \
-    --disable-multilib                             \
-    --disable-libatomic                            \
-    --disable-libgomp                              \
-    --disable-libquadmath                          \
-    --disable-libsanitizer                         \
-    --disable-libssp                               \
-    --disable-libvtv                               \
-    --enable-languages=c,c++
-
-

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

-
-
- --with-build-sysroot=$LFS -
-
-

- Обычно, использование --host гарантирует, что для - сборки GCC используется кросс-компилятор, и этот компилятор - знает, что он должен искать заголовочные файлы и библиотеки в - $LFS. Но сборочная система GCC - использует другие инструменты, которые не знают об этом - местоположении. Этот параметр необходим для того, чтобы они - могли найти нужные файлы в $LFS, а не на хосте. -

-
-
- --target=$LFS_TGT -
-
-

- Поскольку мы выполняем кросс-компиляцию GCC, невозможно - создать целевые библиотеки (libgcc и libstdc++) с ранее скомпилированными - двоичными файлами GCC, потому что эти двоичные файлы не будут - работать на хост-дистрибутиве. Система сборки GCC по - умолчанию попытается использовать компиляторы C и C++ хоста в - качестве обходного пути. Сейчас не поддерживается создание - целевых библиотек GCC с помощью другой версии GCC, поэтому - использование компиляторов хоста может привести к сбою - сборки. Этот параметр гарантирует сборку библиотек с помощью - GCC собранного на первом проходе. -

-
-
- LDFLAGS_FOR_TARGET=... -
-
-

- Разрешить libstdc++ - использовать общую библиотеку libgcc, собранную на этом этапе, вместо - статической версии, собранной в GCC Проход 1. Это необходимо - для поддержки обработки исключений C++ -

-
-
- --disable-libsanitizer -
-
-

- Отключает библиотеки среды выполнения GCC sanitizer. Они не - нужны для временного набора инструментов. Этот параметр - необходим для сборки GCC без установки libcrypt для целевого объекта. В - GCC-Проход 1 это решалось с - помощью параметра --disable-libstdcxx, но теперь - мы должны передать его явно. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

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

-
make DESTDIR=$LFS install
-

- В качестве завершающего штриха создайте символическую ссылку на - утилиту. Многие программы и скрипты используют cc вместо gcc, чтобы сделать программы - более универсальными и, следовательно, для совместимости со всеми - типами UNIX-систем, где компилятор GNU C не всегда установлен. - Наличие cc оставляет - системному администратору право самостоятельно решать, какой - компилятор C устанавливать: -

-
ln -sv gcc $LFS/usr/bin/cc
-
-
-

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

-
-
- - - -- cgit v1.2.3