summaryrefslogtreecommitdiff
path: root/lfs-12.1-sysv/chapter08/gcc.html
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.1-sysv/chapter08/gcc.html')
-rw-r--r--lfs-12.1-sysv/chapter08/gcc.html908
1 files changed, 0 insertions, 908 deletions
diff --git a/lfs-12.1-sysv/chapter08/gcc.html b/lfs-12.1-sysv/chapter08/gcc.html
deleted file mode 100644
index 3f0f703..0000000
--- a/lfs-12.1-sysv/chapter08/gcc.html
+++ /dev/null
@@ -1,908 +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>
- 8.28. 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>
- Глава 8. Установка базового системного программного обеспечения
- </h3>
- <ul>
- <li class="prev">
- <a accesskey="p" href="shadow.html" title="Shadow-4.14.5">Пред.</a>
- <p>
- Shadow-4.14.5
- </p>
- </li>
- <li class="next">
- <a accesskey="n" href="ncurses.html" title=
- "Ncurses-6.4-20230520">След.</a>
- <p>
- Ncurses-6.4-20230520
- </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.1">Начало</a>
- </li>
- </ul>
- </div>
- <h1 class="sect1">
- <a id="ch-system-gcc" name="ch-system-gcc"></a>8.28. GCC-13.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">42 SBU (с тестами)</span>
- </div>
- <div class="seg">
- <strong class="segtitle">Требуемое дисковое
- пространство:</strong> <span class="segbody">5.5 GB</span>
- </div>
- </div>
- </div>
- </div>
- <div class="installation" lang="ru" xml:lang="ru">
- <h2 class="sect2">
- 8.28.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 \
- --disable-multilib \
- --disable-bootstrap \
- --disable-fixincludes \
- --with-system-zlib</kbd></pre>
- <p>
- GCC поддерживает семь различных языков программирования, но
- предварительные условия для большинства из них еще не выполнены.
- См. страницу <a class="ulink" href=
- "https://mirror.linuxfromscratch.ru/blfs/view/12.1/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 переполняет стек по умолчанию,
- поэтому увеличьте размер стека перед запуском тестов:
- </p>
- <pre class="userinput"><kbd class=
- "command">ulimit -s 32768</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.1/">https://mirror.linuxfromscratch.ru/lfs/build-logs/12.1/</a>
- и <a class="ulink" href=
- "https://gcc.gnu.org/ml/gcc-testresults/">https://gcc.gnu.org/ml/gcc-testresults/</a>.
- </p>
- <p>
- Известно, что восемь тестов gcc (из более чем 185 000):
- <code class="filename">pr56837.c</code> и семь тестов из каталога
- <code class="filename">analyzer</code> завершились неудачно. Также
- провалился один тест libstdc++ (из более чем 15 000) — это
- <code class="filename">copy.cc</code>. Известно, что для g++ 21
- тест (из примерно 250 000), 14 тестов <span class=
- "quote">«<span class="quote">AddressSanitizer*</span>»</span> и 7
- тестов <code class="filename">interception-malloc-test-1.C</code>
- завершились неудачно. Кроме того, несколько тестов из каталога
- <code class="filename">vect</code> завершаются неудачно, если
- оборудование не поддерживает AVX.
- </p>
- <p>
- Не всегда удается избежать неожиданных сбоев. Разработчики GCC
- обычно знают об этих проблемах, но еще не решили их. Если
- результаты теста не сильно отличаются от результатов по указанному
- выше 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)/13.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-13.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)/13.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/13.2.0/../../../../lib/Scrt1.o succeeded
-/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/crti.o succeeded
-/usr/lib/gcc/x86_64-pc-linux-gnu/13.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/13.2.0/include
- /usr/local/include
- /usr/lib/gcc/x86_64-pc-linux-gnu/13.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.28.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-13.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.14.5">Пред.</a>
- <p>
- Shadow-4.14.5
- </p>
- </li>
- <li class="next">
- <a accesskey="n" href="ncurses.html" title=
- "Ncurses-6.4-20230520">След.</a>
- <p>
- Ncurses-6.4-20230520
- </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.1">Начало</a>
- </li>
- </ul>
- </div>
- </body>
-</html>