From c4d43142181a45b849a15cf8ec5ebe61cea33897 Mon Sep 17 00:00:00 2001 From: Sn4il Date: Wed, 10 Jan 2024 16:57:29 +0300 Subject: LFS 12 mirror --- lfs-12.0-sysv/chapter08/binutils.html | 656 ++++++++++++++++++++++++++++++++++ 1 file changed, 656 insertions(+) create mode 100644 lfs-12.0-sysv/chapter08/binutils.html (limited to 'lfs-12.0-sysv/chapter08/binutils.html') diff --git a/lfs-12.0-sysv/chapter08/binutils.html b/lfs-12.0-sysv/chapter08/binutils.html new file mode 100644 index 0000000..7248a33 --- /dev/null +++ b/lfs-12.0-sysv/chapter08/binutils.html @@ -0,0 +1,656 @@ + + + + + + 8.18. Binutils-2.41 + + + + + + + + +
+

+ 8.18. + Binutils-2.41 +

+
+

+ Пакет Binutils содержит компоновщик, ассемблер и другие инструменты + для работы с объектными файлами. +

+
+
+
+ Приблизительное время сборки: + 2.2 SBU +
+
+ Требуемое дисковое + пространство: 2.7 GB +
+
+
+
+
+

+ 8.18.1. Установка пакета Binutils +

+

+ Документация Binutils рекомендует выполнять компиляцию в отдельном + каталоге: +

+
mkdir -v build
+cd       build
+

+ Подготовьте Binutils к компиляции: +

+
../configure --prefix=/usr       \
+             --sysconfdir=/etc   \
+             --enable-gold       \
+             --enable-ld=default \
+             --enable-plugins    \
+             --enable-shared     \
+             --disable-werror    \
+             --enable-64-bit-bfd \
+             --with-system-zlib
+
+

+ Значение параметров настройки: +

+
+
+ --enable-gold +
+
+

+ Собирает компоновщик gold и устанавливает его как ld.gold + (вместе с компоновщиком по умолчанию). +

+
+
+ --enable-ld=default +
+
+

+ Собирает оригинальный компоновщик bfd и устанавливает его как + ld (компоновщик по умолчанию) и как ld.bfd +

+
+
+ --enable-plugins +
+
+

+ Включает поддержку плагинов для компоновщика. +

+
+
+ --enable-64-bit-bfd +
+
+

+ Включает 64-разрядную поддержку (на хостах с ограниченным + размерам слов). Может не понадобится в 64-разрядных системах, + но вреда от этого не будет. +

+
+
+ --with-system-zlib +
+
+

+ Использовать установленную библиотеку zlib вместо сборки + собственной. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make tooldir=/usr
+
+

+ Значение параметра make: +

+
+
+ tooldir=/usr +
+
+

+ Обычно для tooldir (каталога, в котором будут расположены + исполняемые файлы) установлено значение $(exec_prefix)/$(target_alias). Например, + машины x86_64 преобразуют это значение в /usr/x86_64-unknown-linux-gnu. Поскольку + это пользовательская система, то целевой каталог в + /usr не требуется. Параметр + $(exec_prefix)/$(target_alias) + использовался, если бы система применялась для + кросс-компиляции (например, при компиляции пакета на + компьютере Intel, который генерирует код, который может быть + выполнен на компьютерах PowerPC). +

+
+
+
+
+ [Важно] +

+ Важно +

+

+ Набор тестов для Binutils в этом разделе считается критически + важным. Ни в коем случае не пропускайте его. +

+
+

+ Выполните тестирование: +

+
make -k check
+

+ Чтобы получить список неудачных тестов, запустите: +

+
grep '^FAIL:' $(find -name '*.log')
+

+ Двенадцать тестов завершаются неудачно в наборе тестов gold, когда + GCC собирается с параметрами --enable-default-pie и --enable-default-ssp. +

+

+ Также известно, что завершаются неудачно три теста в пакете + gprofng. +

+

+ Установите пакет: +

+
make tooldir=/usr install
+

+ Удалите бесполезные статические библиотеки: +

+
rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a
+
+
+

+ 8.18.2. + Содержимое пакета Binutils +

+
+
+
+ Установленные программы: + addr2line, ar, as, c++filt, dwp, elfedit, + gprof, gprofng, ld, ld.bfd, ld.gold, nm, objcopy, objdump, + ranlib, readelf, size, strings и strip +
+
+ Установленные библиотеки: + libbfd.so, libctf.so, libctf-nobfd.so, + libgprofng.so, libopcodes.so и libsframe.so +
+
+ Созданные каталоги: + /usr/lib/ldscripts +
+
+
+
+

+ Краткое описание +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ addr2line +

+
+

+ Переводит адреса программ в имена файлов и номера строк; + учитывая адрес и имя исполняемого файла, использует + отладочную информацию в исполняемом файле, для + определения файла исходного кода и номера строки, + ассоциированной с адресом +

+
+

+ ar +

+
+

+ Создаёт, изменяет и распаковывает архивы +

+
+

+ as +

+
+

+ Ассемблер, который собирает результат работы gcc в объектные файлы +

+
+

+ c++filt +

+
+

+ Используется компоновщиком для исправления символов C++ и + Java и предотвращения конфликтов перегруженных функций. +

+
+

+ dwp +

+
+

+ Утилита для упаковки DWARF +

+
+

+ elfedit +

+
+

+ Обновляет ELF заголовки в ELF файлах +

+
+

+ gprof +

+
+

+ Отображает в графическом виде информацию о профилировании +

+
+

+ gprofng +

+
+

+ Собирает и анализирует данные о производительности +

+
+

+ ld +

+
+

+ Компоновщик, который объединяет несколько объектных и + архивных файлов в один файл, перемещая их данные и + связывая символическими ссылками +

+
+

+ ld.gold +

+
+

+ Урезанная версия ld, которая поддерживает только формат + объектных файлов elf +

+
+

+ ld.bfd +

+
+

+ Жесткая ссылка на ld +

+
+

+ nm +

+
+

+ Выводит список символов, используемых в данном объектном + файле +

+
+

+ objcopy +

+
+

+ Преобразует один тип объектного файла в другой +

+
+

+ objdump +

+
+

+ Отображает информацию о данном объектном файле; можно + указать параметры, определяющие, какая конкретно + информация будет отображаться. Отображаемая информация + полезна для программистов, которые работают над + инструментами, используемыми при компиляции +

+
+

+ ranlib +

+
+

+ Создает индекс содержимого архива и сохраняет его в + архиве; в индексе перечислены все символы, определенные в + перемещаемых объектных файлах, содержащихся в архиве +

+
+

+ readelf +

+
+

+ Отображает информацию о двоичных файлах типа ELF +

+
+

+ size +

+
+

+ Отображает размеры секций и общий размер указанных + объектных файлов +

+
+

+ strings +

+
+

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

+
+

+ strip +

+
+

+ Удаляет символы из объектных файлов +

+
+

+ libbfd +

+
+

+ Библиотека дескрипторов двоичных файлов +

+
+

+ libctf +

+
+

+ Библиотека отладки формата Compat ANSI-C Type +

+
+

+ libctf-nobfd +

+
+

+ Вариант libctf, не использующий функциональность libbfd. +

+
+

+ libgprofng +

+
+

+ Библиотека, содержащая большинство подпрограмм, + используемых gprofng +

+
+

+ libopcodes +

+
+

+ Библиотека для работы с опкодами—«читаемыми» + версиями инструкций для процессора. Используется для + сборки таких утилит как objdump +

+
+

+ libsframe +

+
+

+ Библиотека для поддержки обратной онлайн-трассировки с + использованием простого декодера разделов .sframe. +

+
+
+
+
+ + + -- cgit v1.2.3