diff options
author | Sn4il <sn4il@thedroth.rocks> | 2024-09-02 15:54:35 +0300 |
---|---|---|
committer | Sn4il <sn4il@thedroth.rocks> | 2024-09-02 15:54:35 +0300 |
commit | 2203e654b389586650d553251b04544a34f189bf (patch) | |
tree | 0125b69fc70a2506c53158ba2020993a5b8985b7 /lfs-12.2-sysv/chapter05/gcc-libstdc++.html | |
parent | 200d528e55ca954d37769f4d143f10c9519b00e7 (diff) | |
download | sn4il-site-2203e654b389586650d553251b04544a34f189bf.tar.gz sn4il-site-2203e654b389586650d553251b04544a34f189bf.zip |
LFS 12.2
Diffstat (limited to 'lfs-12.2-sysv/chapter05/gcc-libstdc++.html')
-rw-r--r-- | lfs-12.2-sysv/chapter05/gcc-libstdc++.html | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/lfs-12.2-sysv/chapter05/gcc-libstdc++.html b/lfs-12.2-sysv/chapter05/gcc-libstdc++.html new file mode 100644 index 0000000..cd4082d --- /dev/null +++ b/lfs-12.2-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-14.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.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Глава 5. Сборка кросс-тулчейна + </h3> + <ul> + <li class="prev"> + <a accesskey="p" href="glibc.html" title="Glibc-2.40">Пред.</a> + <p> + Glibc-2.40 + </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.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="ch-tools-libstdcpp" name="ch-tools-libstdcpp"></a>5.6. Libstdc++ + из GCC-14.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-14.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.2 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-14.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++/14.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++/14.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++/14.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.29.2. Содержимое пакета GCC">Раздел 8.29.2, «Содержимое + пакета GCC.»</a> + </p> + </div> + </div> + <div class="navfooter"> + <ul> + <li class="prev"> + <a accesskey="p" href="glibc.html" title="Glibc-2.40">Пред.</a> + <p> + Glibc-2.40 + </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.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> |