diff options
Diffstat (limited to 'lfs-12.1-sysv/chapter06/gcc-pass2.html')
-rw-r--r-- | lfs-12.1-sysv/chapter06/gcc-pass2.html | 273 |
1 files changed, 0 insertions, 273 deletions
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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> - <title> - 6.18. GCC-13.2.0 - Проход 2 - </title> - <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" /> - <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /> - <link rel="stylesheet" href="../stylesheets/lfs-print.css" type= - "text/css" media="print" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - </head> - <body class="lfs" id="lfs-12.1"> - <div class="navheader"> - <h4> - Линукс с нуля - Версия 12.1 - </h4> - <h3> - Глава 6. Кросс-Компиляция временных инструментов - </h3> - <ul> - <li class="prev"> - <a accesskey="p" href="binutils-pass2.html" title= - "Binutils-2.42 - Проход 2">Пред.</a> - <p> - Binutils-2.42 - Проход 2 - </p> - </li> - <li class="next"> - <a accesskey="n" href="../chapter07/chapter07.html" title= - "Вход в окружение Chroot и создание дополнительных временных инструментов"> - След.</a> - <p> - Вход в окружение Chroot и создание дополнительных временных - инструментов - </p> - </li> - <li class="up"> - <a accesskey="u" href="chapter06.html" title= - "Глава 6. Кросс-Компиляция временных инструментов">Наверх</a> - </li> - <li class="home"> - <a accesskey="h" href="../index.html" title= - "Линукс с нуля - Версия 12.1">Начало</a> - </li> - </ul> - </div> - <h1 class="sect1"> - <a id="ch-tools-gcc-pass2" name="ch-tools-gcc-pass2"></a>6.18. - GCC-13.2.0 - Проход 2 - </h1> - <div class="wrap" lang="ru" xml:lang="ru"> - <div class="package" lang="ru" xml:lang="ru"> - <p> - Пакет GCC содержит коллекцию компиляторов GNU, которая включает - компиляторы C и C++. - </p> - <div class="segmentedlist"> - <div class="seglistitem"> - <div class="seg"> - <strong class="segtitle">Приблизительное время сборки:</strong> - <span class="segbody">4.4 SBU</span> - </div> - <div class="seg"> - <strong class="segtitle">Требуемое дисковое - пространство:</strong> <span class="segbody">4.8 GB</span> - </div> - </div> - </div> - </div> - <div class="installation" lang="ru" xml:lang="ru"> - <h2 class="sect2"> - 6.18.1. Установка пакета GCC - </h2> - <p> - Как и при первой сборке GCC, требуются пакеты GMP, MPFR и MPC. - Распакуйте архивы и переименуйте каталоги: - </p> - <pre class="userinput"><kbd class= - "command">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</kbd></pre> - <p> - При сборке на x86_64 измените имя каталога по умолчанию для - 64-разрядных библиотек на <span class="quote">«<span class= - "quote">lib</span>»</span>: - </p> - <pre class="userinput"><kbd class="command">case $(uname -m) in - x86_64) - sed -e '/m64=/s/lib64/lib/' \ - -i.orig gcc/config/i386/t-linux64 - ;; -esac</kbd></pre> - <p> - Переопределите правила сборки заголовочных файлов libgcc и - libstdc++, чтобы разрешить создание этих библиотек с поддержкой - потоков POSIX: - </p> - <pre class="userinput"><kbd class= - "command">sed '/thread_header =/s/@.*@/gthr-posix.h/' \ - -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in</kbd></pre> - <p> - Снова создайте отдельный каталог сборки: - </p> - <pre class="userinput"><kbd class="command">mkdir -v build -cd build</kbd></pre> - <p> - Перед началом сборки GCC не забудьте отключить все переменные - среды, которые переопределяют флаги оптимизации по умолчанию. - </p> - <p> - Теперь подготовьте GCC к компиляции: - </p> - <pre class="userinput"><kbd class= - "command">../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++</kbd></pre> - <div class="variablelist"> - <p class="title"> - <strong>Значение новых параметров настройки:</strong> - </p> - <dl class="variablelist"> - <dt> - <span class="term"><em class= - "parameter"><code>--with-build-sysroot=$LFS</code></em></span> - </dt> - <dd> - <p> - Обычно, использование <em class= - "parameter"><code>--host</code></em> гарантирует, что для - сборки GCC используется кросс-компилятор, и этот компилятор - знает, что он должен искать заголовочные файлы и библиотеки в - <code class="filename">$LFS</code>. Но сборочная система GCC - использует другие инструменты, которые не знают об этом - местоположении. Этот параметр необходим для того, чтобы они - могли найти нужные файлы в <code class= - "filename">$LFS</code>, а не на хосте. - </p> - </dd> - <dt> - <span class="term"><em class= - "parameter"><code>--target=$LFS_TGT</code></em></span> - </dt> - <dd> - <p> - Поскольку мы выполняем кросс-компиляцию GCC, невозможно - создать целевые библиотеки (<code class= - "filename">libgcc</code> и <code class= - "filename">libstdc++</code>) с ранее скомпилированными - двоичными файлами GCC, потому что эти двоичные файлы не будут - работать на хост-дистрибутиве. Система сборки GCC по - умолчанию попытается использовать компиляторы C и C++ хоста в - качестве обходного пути. Сейчас не поддерживается создание - целевых библиотек GCC с помощью другой версии GCC, поэтому - использование компиляторов хоста может привести к сбою - сборки. Этот параметр гарантирует сборку библиотек с помощью - GCC собранного на первом проходе. - </p> - </dd> - <dt> - <span class="term"><em class= - "parameter"><code>LDFLAGS_FOR_TARGET=...</code></em></span> - </dt> - <dd> - <p> - Разрешить <code class="filename">libstdc++</code> - использовать общую библиотеку <code class= - "filename">libgcc</code>, собранную на этом этапе, вместо - статической версии, собранной в GCC Проход 1. Это необходимо - для поддержки обработки исключений C++ - </p> - </dd> - <dt> - <span class="term"><em class= - "parameter"><code>--disable-libsanitizer</code></em></span> - </dt> - <dd> - <p> - Отключает библиотеки среды выполнения GCC sanitizer. Они не - нужны для временного набора инструментов. Этот параметр - необходим для сборки GCC без установки <code class= - "systemitem">libcrypt</code> для целевого объекта. В - <a class="xref" href="../chapter05/gcc-pass1.html" title= - "5.3. GCC-13.2.0 - Проход 1">GCC-Проход 1</a> это решалось с - помощью параметра <em class= - "parameter"><code>--disable-libstdcxx</code></em>, но теперь - мы должны передать его явно. - </p> - </dd> - </dl> - </div> - <p> - Скомпилируйте пакет: - </p> - <pre class="userinput"><kbd class="command">make</kbd></pre> - <p> - Установите пакет: - </p> - <pre class="userinput"><kbd class= - "command">make DESTDIR=$LFS install</kbd></pre> - <p> - В качестве завершающего штриха создайте символическую ссылку на - утилиту. Многие программы и скрипты используют <span class= - "command"><strong>cc</strong></span> вместо <span class= - "command"><strong>gcc</strong></span>, чтобы сделать программы - более универсальными и, следовательно, для совместимости со всеми - типами UNIX-систем, где компилятор GNU C не всегда установлен. - Наличие <span class="command"><strong>cc</strong></span> оставляет - системному администратору право самостоятельно решать, какой - компилятор C устанавливать: - </p> - <pre class="userinput"><kbd class= - "command">ln -sv gcc $LFS/usr/bin/cc</kbd></pre> - </div> - <div class="content" lang="ru" xml:lang="ru"> - <p> - Подробная информация об этом пакете находится в <a class="xref" - href="../chapter08/gcc.html#contents-gcc" title= - "8.28.2. Содержимое пакета GCC">Раздел 8.28.2, «Содержимое - пакета GCC.»</a> - </p> - </div> - </div> - <div class="navfooter"> - <ul> - <li class="prev"> - <a accesskey="p" href="binutils-pass2.html" title= - "Binutils-2.42 - Проход 2">Пред.</a> - <p> - Binutils-2.42 - Проход 2 - </p> - </li> - <li class="next"> - <a accesskey="n" href="../chapter07/chapter07.html" title= - "Вход в окружение Chroot и создание дополнительных временных инструментов"> - След.</a> - <p> - Вход в окружение Chroot и создание дополнительных временных - инструментов - </p> - </li> - <li class="up"> - <a accesskey="u" href="chapter06.html" title= - "Глава 6. Кросс-Компиляция временных инструментов">Наверх</a> - </li> - <li class="home"> - <a accesskey="h" href="../index.html" title= - "Линукс с нуля - Версия 12.1">Начало</a> - </li> - </ul> - </div> - </body> -</html> |