diff options
Diffstat (limited to 'lfs-12.0-sysv/chapter08/stripping.html')
-rw-r--r-- | lfs-12.0-sysv/chapter08/stripping.html | 223 |
1 files changed, 0 insertions, 223 deletions
diff --git a/lfs-12.0-sysv/chapter08/stripping.html b/lfs-12.0-sysv/chapter08/stripping.html deleted file mode 100644 index f7beb74..0000000 --- a/lfs-12.0-sysv/chapter08/stripping.html +++ /dev/null @@ -1,223 +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.82. Удаление отладочных символов - </title> - <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" /> - <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /> - <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.0"> - <div class="navheader"> - <h4> - Линукс с нуля - Версия 12.0 - </h4> - <h3> - Глава 8. Установка базового системного программного обеспечения - </h3> - <ul> - <li class="prev"> - <a accesskey="p" href="aboutdebug.html" title= - "Об отладочных символах">Пред.</a> - <p> - Об отладочных символах - </p> - </li> - <li class="next"> - <a accesskey="n" href="cleanup.html" title="Очистка">След.</a> - <p> - Очистка - </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.0">Начало</a> - </li> - </ul> - </div> - <div class="sect1" lang="en" xml:lang="en"> - <h1 class="sect1"> - <a id="ch-system-stripping" name="ch-system-stripping"></a>8.82. - Удаление отладочных символов - </h1> - <p> - Этот раздел является необязательным. Если предполагаемый пользователь - не является программистом и не планирует выполнять какую-либо отладку - системного программного обеспечения, размер системы можно уменьшить - примерно на 2 ГБ, удалив отладочные символы и некоторые ненужные - записи таблицы символов из двоичных файлов и библиотек. Это не - вызывает никаких неудобств для обычного пользователя Linux. - </p> - <p> - Большинство людей, использующих приведенные ниже команды, не - испытывают никаких трудностей. Однако легко допустить опечатку и - сделать новую систему непригодной для использования. Поэтому перед - выполнением команды <span class= - "command"><strong>strip</strong></span> рекомендуется сделать - резервную копию системы LFS. - </p> - <p> - Команда <span class="command"><strong>strip</strong></span> с - параметром <em class="parameter"><code>--strip-unneeded</code></em> - удаляет все отладочные символы из двоичного файла или библиотеки. - Кроме этого, она удаляет все записи таблицы символов, ненужные - компоновщику (для статических библиотек) или динамическому - компоновщику (для динамически подключаемых двоичных файлов и общих - библиотек). - </p> - <p> - Отладочные символы для выбранных библиотек сохраняются в отдельных - файлах. Эта отладочная информация необходима при выполнении - регрессионных тестов, с помощью <a class="ulink" href= - "https://mirror.linuxfromscratch.ru/blfs/view/12.0//general/valgrind.html"> - valgrind</a> или <a class="ulink" href= - "https://mirror.linuxfromscratch.ru/blfs/view/12.0//general/gdb.html"> - gdb</a> в BLFS. - </p> - <p> - Обратите внимание, что команда <span class= - "command"><strong>strip</strong></span> перезапишет двоичный файл или - библиотеку, которую она обрабатывает. Это может привести к сбою - процессов, использующих код или данные из файла. Если это затронет - сам процесс, выполняющий <span class= - "command"><strong>strip</strong></span>, удаляемый двоичный файл или - библиотека могут быть уничтожены; это может сделать систему полностью - непригодной для использования. Чтобы избежать этого, мы скопируем - некоторые библиотеки и двоичные файлы в <code class= - "filename">/tmp</code>, очистим их и переустановим с помощью команды - <span class="command"><strong>install</strong></span>. Прочтите - статью <a class="xref" href="pkgmgt.html#pkgmgmt-upgrade-issues" - title="8.2.1. Проблемы с обновлением">Раздел 8.2.1, «Проблемы с - обновлением»</a>, чтобы понять, почему следует использовать команду - <span class="command"><strong>install</strong></span> здесь. - </p> - <div class="admon note"> - <img alt="[Примечание]" src="../images/note.png" /> - <h3> - Примечание - </h3> - <p> - Имя загрузчика ELF — ld-linux-x86-64.so.2 в 64-битных системах. и - ld-linux.so.2 в 32-битных системах. Конструкция ниже выбирает - правильное имя для текущей архитектуры, исключая всё, что - заканчивается на <span class="quote">«<span class= - "quote">g</span>»</span>, если приведенные ниже команды уже были - выполнены. - </p> - </div> - <div class="admon important"> - <img alt="[Важно]" src="../images/important.png" /> - <h3> - Важно - </h3> - <p> - Если есть какой-либо пакет, версия которого отличается от версии, - указанной в книге (либо в соответствии с рекомендациями по - безопасности, либо в соответствии с личными предпочтениями), может - потребоваться обновить имя файла библиотеки в <code class= - "envar">save_usrlib</code> или <code class= - "envar">online_usrlib</code>. <span class="bold"><strong>В - противном случае система может стать полностью непригодной для - использования.</strong></span> - </p> - </div> - <pre class="userinput"><kbd class= - "command">save_usrlib="$(cd /usr/lib; ls ld-linux*[^g]) - libc.so.6 - libthread_db.so.1 - libquadmath.so.0.0.0 - libstdc++.so.6.0.32 - libitm.so.1.0.0 - libatomic.so.1.2.0" - -cd /usr/lib - -for LIB in $save_usrlib; do - objcopy --only-keep-debug $LIB $LIB.dbg - cp $LIB /tmp/$LIB - strip --strip-unneeded /tmp/$LIB - objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB - install -vm755 /tmp/$LIB /usr/lib - rm /tmp/$LIB -done - -online_usrbin="bash find strip" -online_usrlib="libbfd-2.41.so - libsframe.so.1.0.0 - libhistory.so.8.2 - libncursesw.so.6.4 - libm.so.6 - libreadline.so.8.2 - libz.so.1.2.13 - $(cd /usr/lib; find libnss*.so* -type f)" - -for BIN in $online_usrbin; do - cp /usr/bin/$BIN /tmp/$BIN - strip --strip-unneeded /tmp/$BIN - install -vm755 /tmp/$BIN /usr/bin - rm /tmp/$BIN -done - -for LIB in $online_usrlib; do - cp /usr/lib/$LIB /tmp/$LIB - strip --strip-unneeded /tmp/$LIB - install -vm755 /tmp/$LIB /usr/lib - rm /tmp/$LIB -done - -for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \ - $(find /usr/lib -type f -name \*.a) \ - $(find /usr/{bin,sbin,libexec} -type f); do - case "$online_usrbin $online_usrlib $save_usrlib" in - *$(basename $i)* ) - ;; - * ) strip --strip-unneeded $i - ;; - esac -done - -unset BIN LIB save_usrlib online_usrbin online_usrlib -</kbd></pre> - <p> - Большое количество файлов будет помечено как ошибочные, потому что - формат файла не распознан. Эти предупреждения можно смело - игнорировать. Они указывают на то, что файлы являются скриптами, а не - двоичными файлами. - </p> - </div> - <div class="navfooter"> - <ul> - <li class="prev"> - <a accesskey="p" href="aboutdebug.html" title= - "Об отладочных символах">Пред.</a> - <p> - Об отладочных символах - </p> - </li> - <li class="next"> - <a accesskey="n" href="cleanup.html" title="Очистка">След.</a> - <p> - Очистка - </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.0">Начало</a> - </li> - </ul> - </div> - </body> -</html> |