summaryrefslogtreecommitdiff
path: root/lfs-12.0-sysv/chapter08/stripping.html
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.0-sysv/chapter08/stripping.html')
-rw-r--r--lfs-12.0-sysv/chapter08/stripping.html223
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. Проблемы с обновлением">Раздел&nbsp;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>