summaryrefslogtreecommitdiff
path: root/lfs-12.2-sysv/chapter08/gcc.html
diff options
context:
space:
mode:
authorSn4il <sn4il@thedroth.rocks>2024-09-02 15:54:35 +0300
committerSn4il <sn4il@thedroth.rocks>2024-09-02 15:54:35 +0300
commit2203e654b389586650d553251b04544a34f189bf (patch)
tree0125b69fc70a2506c53158ba2020993a5b8985b7 /lfs-12.2-sysv/chapter08/gcc.html
parent200d528e55ca954d37769f4d143f10c9519b00e7 (diff)
downloadsn4il-site-2203e654b389586650d553251b04544a34f189bf.tar.gz
sn4il-site-2203e654b389586650d553251b04544a34f189bf.zip
LFS 12.2
Diffstat (limited to 'lfs-12.2-sysv/chapter08/gcc.html')
-rw-r--r--lfs-12.2-sysv/chapter08/gcc.html911
1 files changed, 911 insertions, 0 deletions
diff --git a/lfs-12.2-sysv/chapter08/gcc.html b/lfs-12.2-sysv/chapter08/gcc.html
new file mode 100644
index 0000000..6579968
--- /dev/null
+++ b/lfs-12.2-sysv/chapter08/gcc.html
@@ -0,0 +1,911 @@
+<!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>
+ 8.29. 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>
+ Глава 8. Установка базового системного программного обеспечения
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="shadow.html" title="Shadow-4.16.0">Пред.</a>
+ <p>
+ Shadow-4.16.0
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="ncurses.html" title="Ncurses-6.5">След.</a>
+ <p>
+ Ncurses-6.5
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter08.html" title=
+ "Глава 8. Установка базового системного программного обеспечения">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-system-gcc" name="ch-system-gcc"></a>8.29. GCC-14.2.0
+ </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">46 SBU (с тестами)</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Требуемое дисковое
+ пространство:</strong> <span class="segbody">6.3 GB</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="installation" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 8.29.1. Установка пакета GCC
+ </h2>
+ <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>
+ Документация GCC рекомендует собирать GCC в отдельном каталоге:
+ </p>
+ <pre class="userinput"><kbd class="command">mkdir -v build
+cd build</kbd></pre>
+ <p>
+ Подготовьте GCC к компиляции:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">../configure --prefix=/usr \
+ LD=ld \
+ --enable-languages=c,c++ \
+ --enable-default-pie \
+ --enable-default-ssp \
+ --enable-host-pie \
+ --disable-multilib \
+ --disable-bootstrap \
+ --disable-fixincludes \
+ --with-system-zlib</kbd></pre>
+ <p>
+ GCC поддерживает семь различных языков программирования, но
+ предварительные условия для большинства из них еще не выполнены.
+ См. страницу <a class="ulink" href=
+ "https://mirror.linuxfromscratch.ru/blfs/view/12.2/general/gcc.html">
+ BLFS Book GCC</a> для получения инструкций о том, как собрать все
+ языки, поддерживаемые GCC
+ </p>
+ <div class="variablelist">
+ <p class="title">
+ <strong>Значение новых параметров настройки:</strong>
+ </p>
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>LD=ld</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Этот параметр указывает скрипту configure использовать ld,
+ установленный программой Binutils, собранной ранее в этой
+ главе, а не кросс версию, которая использовалась бы в
+ противном случае.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--disable-fixincludes</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ По умолчанию во время установки GCC некоторые системные
+ заголовки будут <span class="quote">«<span class=
+ "quote">исправлены</span>»</span> для использования с GCC.
+ Это не обязательно для современной системы Linux и
+ потенциально опасно, если пакет будет переустановлен после
+ установки GCC. Этот параметр не позволяет GCC <span class=
+ "quote">«<span class="quote">исправлять</span>»</span>
+ заголовки.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--with-system-zlib</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Этот параметр указывает GCC ссылаться на установленную в
+ системе копию библиотеки Zlib, а не на собственную внутреннюю
+ копию.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3><a id="pie-ssp-info" name="pie-ssp-info"></a>
+ <p>
+ PIE (позиционно-независимые исполняемые файлы) — это двоичные
+ программы, которые можно загружать в любое место памяти. Без PIE
+ функция безопасности под названием ASLR (рандомизация размещения
+ адресного пространства) может применяться к общим библиотекам, но
+ не к самим исполняемым файлам. Включение PIE позволяет
+ использовать ASLR для исполняемых файлов в дополнение к общим
+ библиотекам и смягчает некоторые атаки, основанные на
+ фиксированных адресах конфиденциального кода или данных в
+ исполняемых файлах.
+ </p>
+ <p>
+ SSP (Stack Smashing Protection - защита от разрушения стека) —
+ это метод, гарантирующий, что стек параметров не будет поврежден.
+ Повреждение стека может, например, изменить адрес возврата
+ подпрограммы, тем самым передав управление какому-то опасному
+ коду (существующему в программе или общих библиотеках или
+ каким-то образом внедренному злоумышленником).
+ </p>
+ </div>
+ <p>
+ Скомпилируйте пакет:
+ </p>
+ <pre class="userinput"><kbd class="command">make</kbd></pre>
+ <div class="admon important">
+ <img alt="[Важно]" src="../images/important.png" />
+ <h3>
+ Важно
+ </h3>
+ <p>
+ В этом разделе набор тестов для GCC считается важным, но занимает
+ много времени. Начинающим сборщикам не рекомендуется пропускать
+ его. Время выполнения тестов можно значительно сократить, добавив
+ -jx в приведенную ниже команду <span class="command"><strong>make
+ -k check</strong></span>, где x - количество ядер процессора в
+ вашей системе.
+ </p>
+ </div>
+ <p>
+ GCC может потребоваться больше места в стеке для компиляции
+ некоторых сложных шаблонов кода. В качестве меры предосторожности
+ для хост-дистрибутивов с жестким ограничением стека явно установите
+ неограниченный жесткий предел. В большинстве хост-дистрибутивов (и
+ в собранной LFS) жесткий предел по умолчанию неограничен, но нет
+ ничего плохого в том, чтобы установить его явно. Также нет
+ необходимости изменять мягкий предел размера стека, поскольку GCC
+ автоматически установит для него соответствующее значение, если это
+ значение не превышает жесткий предел:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">ulimit -s -H unlimited</kbd></pre>
+ <p>
+ Теперь удалите/исправьте несколько известных ошибок тестирования:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">sed -e '/cpython/d' -i ../gcc/testsuite/gcc.dg/plugin/plugin.exp
+sed -e 's/no-pic /&amp;-no-pie /' -i ../gcc/testsuite/gcc.target/i386/pr113689-1.c
+sed -e 's/300000/(1|300000)/' -i ../libgomp/testsuite/libgomp.c-c++-common/pr109062.c
+sed -e 's/{ target nonpic } //' \
+ -e '/GOTPCREL/d' -i ../gcc/testsuite/gcc.target/i386/fentryname3.c</kbd></pre>
+ <p>
+ Выполните тестирование от имени непривилегированного пользователя,
+ но не останавливайтесь на ошибках:
+ </p>
+ <pre class="userinput"><kbd class="command">chown -R tester .
+su tester -c "PATH=$PATH make -k check"</kbd></pre>
+ <p>
+ Чтобы получить сводку результатов набора тестов, выполните:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">../contrib/test_summary</kbd></pre>
+ <p>
+ Чтобы отфильтровать только итоговую сводку, передайте вывод через
+ pipe <strong class="userinput"><code>grep -A7 Summ</code></strong>.
+ </p>
+ <p>
+ Результаты можно сравнить с результатами, размещенными на <a class=
+ "ulink" href=
+ "https://mirror.linuxfromscratch.ru/lfs/build-logs/12.2/">https://mirror.linuxfromscratch.ru/lfs/build-logs/12.2/</a>
+ и <a class="ulink" href=
+ "https://gcc.gnu.org/ml/gcc-testresults/">https://gcc.gnu.org/ml/gcc-testresults/</a>.
+ </p>
+ <p>
+ Не всегда удается избежать неожиданных сбоев. В некоторых случаях
+ неудачное завершение тестов - это следствие их выполнения на
+ конкретном оборудовании системы. Если результаты теста не сильно
+ отличаются от результатов по указанному выше URL-адресу, можно
+ продолжать.
+ </p>
+ <p>
+ Установите пакет:
+ </p>
+ <pre class="userinput"><kbd class="command">make install</kbd></pre>
+ <p>
+ Каталог сборки GCC теперь принадлежит пользователю <code class=
+ "systemitem">tester</code>, и владелец каталога заголовочных файлов
+ (и его содержимого) указан неверно. Измените владельца на
+ пользователя и группу <code class="systemitem">root</code>:
+ </p>
+ <pre class="userinput"><kbd class="command">chown -v -R root:root \
+ /usr/lib/gcc/$(gcc -dumpmachine)/14.2.0/include{,-fixed}</kbd></pre>
+ <p>
+ Создайте символическую ссылку, требуемую <a class="ulink" href=
+ "https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s09.html">FHS</a>
+ по "историческим" причинам.
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">ln -svr /usr/bin/cpp /usr/lib</kbd></pre>
+ <p>
+ Многие пакеты используют имя <span class=
+ "command"><strong>cc</strong></span> для вызова компилятора языка
+ Си. Мы уже создали <span class="command"><strong>cc</strong></span>
+ как символическую ссылку в <a class="xref" href=
+ "../chapter06/gcc-pass2.html" title=
+ "6.18. GCC-14.2.0 - Проход 2">GCC-Проход 2</a>, теперь создайте
+ символическую ссылку на его справочную страницу:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">ln -sv gcc.1 /usr/share/man/man1/cc.1</kbd></pre>
+ <p>
+ Добавьте символическую ссылку совместимости, чтобы включить сборку
+ программ с оптимизацией времени компоновки (LTO):
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/14.2.0/liblto_plugin.so \
+ /usr/lib/bfd-plugins/</kbd></pre>
+ <p>
+ Теперь, когда наш окончательный набор инструментов готов, важно еще
+ раз убедиться, что компиляция и компоновка будут работать так, как
+ ожидалось. Мы сделаем это, выполнив проверку работоспособности:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">echo 'int main(){}' &gt; dummy.c
+cc dummy.c -v -Wl,--verbose &amp;&gt; dummy.log
+readelf -l a.out | grep ': /lib'</kbd></pre>
+ <p>
+ Ошибок быть не должно, и вывод последней команды будет (с учетом
+ платформо-зависимых различий в имени динамического компоновщика):
+ </p>
+ <pre class="screen"><code class=
+ "computeroutput">[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</code></pre>
+ <p>
+ Теперь убедитесь, что мы настроили использование правильных
+ стартовых файлов:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">grep -E -o '/usr/lib.*/S?crt[1in].*succeeded' dummy.log</kbd></pre>
+ <p>
+ Вывод последней команды должен быть:
+ </p>
+ <pre class="screen"><code class=
+ "computeroutput">/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.0/../../../../lib/Scrt1.o succeeded
+/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.0/../../../../lib/crti.o succeeded
+/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.0/../../../../lib/crtn.o succeeded</code></pre>
+ <p>
+ В зависимости от архитектуры вашего компьютера вышеуказанные
+ параметры могут незначительно отличаться. Разница будет заключаться
+ в имени каталога после <code class="filename">/usr/lib/gcc</code>.
+ Здесь важно обратить внимание на то, что <span class=
+ "command"><strong>gcc</strong></span> нашел все три файла
+ <code class="filename">crt*.o</code> в каталоге <code class=
+ "filename">/usr/lib</code>.
+ </p>
+ <p>
+ Убедитесь, что компилятор ищет правильные заголовочные файлы:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">grep -B4 '^ /usr/include' dummy.log</kbd></pre>
+ <p>
+ Эта команда должна вернуть следующий вывод:
+ </p>
+ <pre class="screen"><code class=
+ "computeroutput">#include &lt;...&gt; search starts here:
+ /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.0/include
+ /usr/local/include
+ /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.0/include-fixed
+ /usr/include</code></pre>
+ <p>
+ Опять же, имя каталога может отличаться от указанного выше, в
+ зависимости от архитектуры вашей системы.
+ </p>
+ <p>
+ Затем убедитесь, что новый компоновщик использует правильные пути
+ поиска:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'</kbd></pre>
+ <p>
+ Ссылки на пути, содержащие компоненты с '-linux-gnu', следует
+ игнорировать, но в противном случае вывод последней команды должен
+ быть таким:
+ </p>
+ <pre class="screen"><code class=
+ "computeroutput">SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64")
+SEARCH_DIR("/usr/local/lib64")
+SEARCH_DIR("/lib64")
+SEARCH_DIR("/usr/lib64")
+SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib")
+SEARCH_DIR("/usr/local/lib")
+SEARCH_DIR("/lib")
+SEARCH_DIR("/usr/lib");</code></pre>
+ <p>
+ 32-разрядная система может использовать несколько других каталогов.
+ Например, вот вывод с компьютера i686:
+ </p>
+ <pre class="screen"><code class=
+ "computeroutput">SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
+SEARCH_DIR("/usr/local/lib32")
+SEARCH_DIR("/lib32")
+SEARCH_DIR("/usr/lib32")
+SEARCH_DIR("/usr/i686-pc-linux-gnu/lib")
+SEARCH_DIR("/usr/local/lib")
+SEARCH_DIR("/lib")
+SEARCH_DIR("/usr/lib");</code></pre>
+ <p>
+ Затем убедитесь, что мы используем правильную libc:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">grep "/lib.*/libc.so.6 " dummy.log</kbd></pre>
+ <p>
+ Вывод последней команды должен быть:
+ </p>
+ <pre class="screen"><code class=
+ "computeroutput">attempt to open /usr/lib/libc.so.6 succeeded</code></pre>
+ <p>
+ Убедитесь, что GCC использует правильный динамический компоновщик:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">grep found dummy.log</kbd></pre>
+ <p>
+ Вывод последней команды должен быть (с учетом различий в имени
+ динамического компоновщика, зависящих от платформы):
+ </p>
+ <pre class="screen"><code class=
+ "computeroutput">found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2</code></pre>
+ <p>
+ Если вывод выглядит не так, как показано выше, или вообще не
+ получен, значит, где-то серьезная ошибка. Изучите и повторите шаги,
+ чтобы выяснить, в чем проблема, и исправьте ее. Любые проблемы
+ должны быть решены, прежде чем вы продолжите процесс.
+ </p>
+ <p>
+ Как только все заработает правильно, удалите тестовые файлы:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">rm -v dummy.c a.out dummy.log</kbd></pre>
+ <p>
+ Наконец, переместите файл:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">mkdir -pv /usr/share/gdb/auto-load/usr/lib
+mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</kbd></pre>
+ </div>
+ <div class="content" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="contents-gcc" name="contents-gcc"></a>8.29.2. Содержимое
+ пакета GCC
+ </h2>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Установленные программы:</strong>
+ <span class="segbody">c++, cc (link to gcc), cpp, g++, gcc,
+ gcc-ar, gcc-nm, gcc-ranlib, gcov, gcov-dump, gcov-tool, и
+ lto-dump</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Установленные библиотеки:</strong>
+ <span class="segbody">libasan.{a,so}, libatomic.{a,so},
+ libcc1.so, libgcc.a, libgcc_eh.a, libgcc_s.so, libgcov.a,
+ libgomp.{a,so}, libhwasan.{a,so}, libitm.{a,so},
+ liblsan.{a,so}, liblto_plugin.so, libquadmath.{a,so},
+ libssp.{a,so}, libssp_nonshared.a, libstdc++.{a,so},
+ libstdc++exp.a, libstdc++fs.a, libsupc++.a, libtsan.{a,so} и
+ libubsan.{a,so}</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Созданные каталоги:</strong>
+ <span class="segbody">/usr/include/c++, /usr/lib/gcc,
+ /usr/libexec/gcc и /usr/share/gcc-14.2.0</span>
+ </div>
+ </div>
+ </div>
+ <div class="variablelist">
+ <h3>
+ Краткое описание
+ </h3>
+ <table border="0" class="variablelist">
+ <colgroup>
+ <col align="left" valign="top" />
+ <col />
+ </colgroup>
+ <tbody>
+ <tr>
+ <td>
+ <p>
+ <a id="c" name="c"></a><span class="term"><span class=
+ "command"><strong>c++</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Компилятор С++
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="cc" name="cc"></a><span class="term"><span class=
+ "command"><strong>cc</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Компилятор C
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="cpp" name="cpp"></a><span class=
+ "term"><span class="command"><strong>cpp</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Препроцессор C; он используется компилятором для
+ расширения инструкций #include, #define и подобные
+ директивы в исходных файлах
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="g" name="g"></a><span class="term"><span class=
+ "command"><strong>g++</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Компилятор C++
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="gcc" name="gcc"></a><span class=
+ "term"><span class="command"><strong>gcc</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Компилятор C
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="gcc-ar" name="gcc-ar"></a><span class=
+ "term"><span class=
+ "command"><strong>gcc-ar</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Обертка над <span class=
+ "command"><strong>ar</strong></span>, добавляющая плагин
+ в командную строку. Эта программа используется только для
+ добавления "оптимизации времени компоновки" и бесполезна
+ с параметрами сборки по умолчанию.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="gcc-nm" name="gcc-nm"></a><span class=
+ "term"><span class=
+ "command"><strong>gcc-nm</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Обертка над <span class=
+ "command"><strong>nm</strong></span>, добавляющая плагин
+ в командную строку. Эта программа используется только для
+ добавления "оптимизации времени компоновки" и бесполезна
+ с параметрами сборки по умолчанию.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="gcc-ranlib" name="gcc-ranlib"></a><span class=
+ "term"><span class=
+ "command"><strong>gcc-ranlib</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Обертка над <span class=
+ "command"><strong>ranlib</strong></span>, добавляющая
+ плагин в командную строку. Эта программа используется
+ только для добавления "оптимизации времени компоновки" и
+ бесполезна с параметрами сборки по умолчанию.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="gcov" name="gcov"></a><span class=
+ "term"><span class=
+ "command"><strong>gcov</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Инструмент тестирования; он используется для анализа
+ программ, чтобы определить, где оптимизация будет иметь
+ наибольший эффект.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="gcov-dump" name="gcov-dump"></a><span class=
+ "term"><span class=
+ "command"><strong>gcov-dump</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Автономный инструмент для дампа профилей gcda and gcno
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="gcov-tool" name="gcov-tool"></a><span class=
+ "term"><span class=
+ "command"><strong>gcov-tool</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Автономный инструмент обработки профиля gcda
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="lto-dump" name="lto-dump"></a><span class=
+ "term"><span class=
+ "command"><strong>lto-dump</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Инструмент для создания дампа объектных файлов, созданных
+ GCC с включенным LTO.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libasan" name="libasan"></a><span class=
+ "term"><code class="filename">libasan</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Библиотека времени выполнения Address Sanitizer
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libatomic" name="libatomic"></a><span class=
+ "term"><code class="filename">libatomic</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Встроенная библиотека времени выполнения GCC atomic
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libcc1" name="libcc1"></a><span class=
+ "term"><code class="filename">libcc1</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Библиотека, которая позволяет GDB использовать GCC
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libgcc" name="libgcc"></a><span class=
+ "term"><code class="filename">libgcc</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Содержит средства поддержки времени исполнения для
+ <span class="command"><strong>gcc</strong></span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libgcov" name="libgcov"></a><span class=
+ "term"><code class="filename">libgcov</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Эта библиотека компонуется с программой, когда в GCC
+ включено профилирование
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libgomp" name="libgomp"></a><span class=
+ "term"><code class="filename">libgomp</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ GNU реализация интерфейса OpenMP API мультиплатформенного
+ параллельного программирования для языков C/C++ и Fortran
+ с общим доступом к памяти
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libhwasan" name="libhwasan"></a><span class=
+ "term"><code class="filename">libhwasan</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Библиотека времени выполнения Hardware-Assisted Address
+ Sanitizer (аппаратной очистки адресов)
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libitm" name="libitm"></a><span class=
+ "term"><code class="filename">libitm</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Библиотека транзакционной памяти GNU
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="liblsan" name="liblsan"></a><span class=
+ "term"><code class="filename">liblsan</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Библиотека времени выполнения Leak Sanitizer (средств
+ защиты от утечек)
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="liblto_plugin" name=
+ "liblto_plugin"></a><span class="term"><code class=
+ "filename">liblto_plugin</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Плагин GCC LTO позволяет Binutils обрабатывать объектные
+ файлы, созданные GCC с включенным LTO.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libquadmath" name="libquadmath"></a><span class=
+ "term"><code class="filename">libquadmath</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ API математической библиотеки GCC Quad Precision
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libssp" name="libssp"></a><span class=
+ "term"><code class="filename">libssp</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Содержит подпрограммы, поддерживающие функциональность
+ защиты стека GCC. Обычно они не используются, потому что
+ Glibc также предоставляет эти подпрограммы.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libstdc" name="libstdc"></a><span class=
+ "term"><code class="filename">libstdc++</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Стандартная библиотека C++
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libstdcexp" name="libstdcexp"></a><span class=
+ "term"><code class="filename">libstdc++exp</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Экспериментальная библиотека контрактов C++
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libstdcfs" name="libstdcfs"></a><span class=
+ "term"><code class="filename">libstdc++fs</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Библиотека файловой системы ISO/IEC TS 18822:2015
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libsupc" name="libsupc"></a><span class=
+ "term"><code class="filename">libsupc++</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Предоставляет вспомогательные процедуры для языка
+ программирования C++
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libtsan" name="libtsan"></a><span class=
+ "term"><code class="filename">libtsan</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Библиотека времени выполнения Thread Sanitizer (средств
+ очистки потоков)
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libubsan" name="libubsan"></a><span class=
+ "term"><code class="filename">libubsan</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Библиотека времени выполнения Undefined Behavior
+ Sanitizer (средств очистки неопределенного поведения)
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="shadow.html" title="Shadow-4.16.0">Пред.</a>
+ <p>
+ Shadow-4.16.0
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="ncurses.html" title="Ncurses-6.5">След.</a>
+ <p>
+ Ncurses-6.5
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter08.html" title=
+ "Глава 8. Установка базового системного программного обеспечения">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>