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/chapter08/gcc.html | |
parent | 200d528e55ca954d37769f4d143f10c9519b00e7 (diff) | |
download | sn4il-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.html | 911 |
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 /&-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(){}' > dummy.c +cc dummy.c -v -Wl,--verbose &> 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 <...> 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> |