summaryrefslogtreecommitdiff
path: root/lfs-12.1-sysv/chapter05/gcc-libstdc++.html
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.1-sysv/chapter05/gcc-libstdc++.html')
-rw-r--r--lfs-12.1-sysv/chapter05/gcc-libstdc++.html214
1 files changed, 214 insertions, 0 deletions
diff --git a/lfs-12.1-sysv/chapter05/gcc-libstdc++.html b/lfs-12.1-sysv/chapter05/gcc-libstdc++.html
new file mode 100644
index 0000000..a9eb128
--- /dev/null
+++ b/lfs-12.1-sysv/chapter05/gcc-libstdc++.html
@@ -0,0 +1,214 @@
+<!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>
+ 5.6. Libstdc++ из GCC-13.2.0
+ </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>
+ Глава 5. Сборка кросс-тулчейна
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="glibc.html" title="Glibc-2.39">Пред.</a>
+ <p>
+ Glibc-2.39
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="../chapter06/chapter06.html" title=
+ "Кросс-Компиляция временных инструментов">След.</a>
+ <p>
+ Кросс-Компиляция временных инструментов
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter05.html" title=
+ "Глава 5. Сборка кросс-тулчейна">Наверх</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-libstdcpp" name="ch-tools-libstdcpp"></a>5.6. Libstdc++
+ из GCC-13.2.0
+ </h1>
+ <div class="wrap" lang="ru" xml:lang="ru">
+ <div class="package" lang="ru" xml:lang="ru">
+ <p>
+ Libstdc++ — это стандартная библиотека C++. Она нужна для
+ компиляции кода C++ (часть GCC написана на C++), когда мы собирали
+ <a class="xref" href="gcc-pass1.html" title=
+ "5.3. GCC-13.2.0 - Проход 1">GCC-Проход 1</a>, нам пришлось
+ отложить её установку, потому что она зависит от библиотеки Glibc,
+ которой еще не было в целевом каталоге.
+ </p>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Приблизительное время сборки:</strong>
+ <span class="segbody">0.2 SBU</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Требуемое дисковое
+ пространство:</strong> <span class="segbody">1.1 GB</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="installation" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 5.6.1. Установка библиотеки Libstdc++
+ </h2>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ <span class="application">Libstdc++</span> является частью
+ исходников GCC. Сначала вы должны распаковать архив GCC и перейти
+ в каталог <code class="filename">gcc-13.2.0</code>.
+ </p>
+ </div>
+ <p>
+ Создайте отдельный каталог сборки для libstdc++ и перейдите в него:
+ </p>
+ <pre class="userinput"><kbd class="command">mkdir -v build
+cd build</kbd></pre>
+ <p>
+ Подготовьте libstdc++ к компиляции:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">../libstdc++-v3/configure \
+ --host=$LFS_TGT \
+ --build=$(../config.guess) \
+ --prefix=/usr \
+ --disable-multilib \
+ --disable-nls \
+ --disable-libstdcxx-pch \
+ --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/13.2.0</kbd></pre>
+ <div class="variablelist">
+ <p class="title">
+ <strong>Значение параметров настройки:</strong>
+ </p>
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--host=...</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Указывает, что должен использоваться кросс-компилятор,
+ который мы только что собрали, вместо того, который находится
+ в <code class="filename">/usr/bin</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--disable-libstdcxx-pch</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Этот аргумент предотвращает установку предварительно
+ скомпилированных include-файлов, которые на данном этапе не
+ нужны.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/13.2.0</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Указывает каталог установки для include-файлов. Поскольку
+ libstdc++ является стандартной библиотекой C++ для LFS, этот
+ каталог должен соответствовать местоположению, в котором
+ компилятор C++ (<span class=
+ "command"><strong>$LFS_TGT-g++</strong></span>) будет искать
+ стандартные включаемые файлы C++. При обычной сборке эта
+ информация автоматически передается в Libstdc++ при
+ выполнении <span class=
+ "command"><strong>configure</strong></span> из каталога
+ верхнего уровня. В нашем случае эта информация должна быть
+ указана явно. Компилятор C++ добавит путь sysroot
+ <code class="filename">$LFS</code> (указанный при сборке GCC
+ Проход 1) к пути поиска include-файлов, поэтому фактически он
+ будет искать в <code class=
+ "filename">$LFS/tools/$LFS_TGT/include/c++/13.2.0</code>.
+ Комбинация переменной <em class=
+ "parameter"><code>DESTDIR</code></em> (в приведенной ниже
+ команде <span class="command"><strong>make
+ install</strong></span>) и этого аргумента обеспечивает
+ установку заголовочных файлов туда.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Скомпилируйте Libstdc++, выполнив:
+ </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>
+ Удалите архивные файлы libtool, поскольку они потенциально опасны
+ при кросс-компиляции:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">rm -v $LFS/usr/lib/lib{stdc++{,exp,fs},supc++}.la</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">Раздел&nbsp;8.28.2, «Содержимое
+ пакета GCC.»</a>
+ </p>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="glibc.html" title="Glibc-2.39">Пред.</a>
+ <p>
+ Glibc-2.39
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="../chapter06/chapter06.html" title=
+ "Кросс-Компиляция временных инструментов">След.</a>
+ <p>
+ Кросс-Компиляция временных инструментов
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter05.html" title=
+ "Глава 5. Сборка кросс-тулчейна">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.1">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>