From 2203e654b389586650d553251b04544a34f189bf Mon Sep 17 00:00:00 2001 From: Sn4il Date: Mon, 2 Sep 2024 15:54:35 +0300 Subject: LFS 12.2 --- lfs-12.1-sysv/chapter08/stripping.html | 224 --------------------------------- 1 file changed, 224 deletions(-) delete mode 100644 lfs-12.1-sysv/chapter08/stripping.html (limited to 'lfs-12.1-sysv/chapter08/stripping.html') diff --git a/lfs-12.1-sysv/chapter08/stripping.html b/lfs-12.1-sysv/chapter08/stripping.html deleted file mode 100644 index 9832849..0000000 --- a/lfs-12.1-sysv/chapter08/stripping.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - 8.83. Удаление отладочных символов - - - - - - - - -

- 8.83. - Удаление отладочных символов -

-
-

- Этот раздел является необязательным. Если предполагаемый пользователь - не является программистом и не планирует выполнять какую-либо отладку - системного программного обеспечения, размер системы можно уменьшить - примерно на 2 ГБ, удалив отладочные символы и некоторые ненужные - записи таблицы символов из двоичных файлов и библиотек. Это не - вызывает никаких неудобств для обычного пользователя Linux. -

-

- Большинство людей, использующих приведенные ниже команды, не - испытывают никаких трудностей. Однако легко допустить опечатку и - сделать новую систему непригодной для использования. Поэтому перед - выполнением команды strip рекомендуется сделать - резервную копию системы LFS. -

-

- Команда strip с - параметром --strip-unneeded - удаляет все отладочные символы из двоичного файла или библиотеки. - Кроме этого, она удаляет все записи таблицы символов, ненужные - компоновщику (для статических библиотек) или динамическому - компоновщику (для динамически подключаемых двоичных файлов и общих - библиотек). -

-

- Отладочные символы из выбранных библиотек сжимаются с помощью - Zlib и сохраняются в отдельных - файлах. Эта отладочная информация необходима при выполнении - регрессионных тестов, с помощью - valgrind или - gdb позже, в BLFS. -

-

- Обратите внимание, что команда strip перезапишет двоичный файл или - библиотеку, которую она обрабатывает. Это может привести к сбою - процессов, использующих код или данные из файла. Если это затронет - сам процесс, выполняющий strip, удаляемый двоичный файл или - библиотека могут быть уничтожены; это может сделать систему полностью - непригодной для использования. Чтобы избежать этого, мы скопируем - некоторые библиотеки и двоичные файлы в /tmp, очистим их и переустановим с помощью команды - install. Прочтите - статью Раздел 8.2.1, «Проблемы с - обновлением», чтобы понять, почему следует использовать команду - install здесь. -

-
- [Примечание] -

- Примечание -

-

- Имя загрузчика ELF — ld-linux-x86-64.so.2 в 64-битных системах. и - ld-linux.so.2 в 32-битных системах. Конструкция ниже выбирает - правильное имя для текущей архитектуры, исключая всё, что - заканчивается на g, если приведенные - ниже команды уже были выполнены. -

-
-
- [Важно] -

- Важно -

-

- Если есть какой-либо пакет, версия которого отличается от версии, - указанной в книге (либо в соответствии с рекомендациями по - безопасности, либо в соответствии с личными предпочтениями), может - потребоваться обновить имя файла библиотеки в save_usrlib или online_usrlib. В - противном случае система может стать полностью непригодной для - использования. -

-
-
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 --compress-debug-sections=zlib $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.42.so
-               libsframe.so.1.0.0
-               libhistory.so.8.2
-               libncursesw.so.6.4-20230520
-               libm.so.6
-               libreadline.so.8.2
-               libz.so.1.3.1
-               libzstd.so.1.5.5
-               $(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
-
-

- Большое количество файлов будет помечено как ошибочные, потому что - формат файла не распознан. Эти предупреждения можно смело - игнорировать. Они указывают на то, что файлы являются скриптами, а не - двоичными файлами. -

-
- - - -- cgit v1.2.3