binutils

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

Настройка

Сборка пакета binutils должна происходить в отдельном каталоге. Создайте его:

mkdir -v build
cd build

Запустите скрипт configure для генерации предназначенных для сборки файлов Makefile:

../configure --prefix=$LFA/tools \
  --target=$LFA_TGT \
  --with-sysroot=$LFA_CROSS \
  --disable-nls \
  --enable-gprofng=no \
  --disable-werror \
  --disable-multilib

Значения новых параметров:

--prefix=$LFA/tools — указывает скрипту configure подготовиться к установке пакета в директорию $LFA/tools.

--target=$LFA_TGT — создаёт кросс-архитектурный исполняемый файл, который запускается на x86_64-системе, но создаёт файлы для $LFA_TGT-архитектуры.

--with-sysroot=$LFA_CROSS — сообщает configure, что $LFA_CROSS будет корнем кросс-компилятора.

--disable-nls — отключает сборку пакета с поддержкой интернационализации и локализации. В кросс-компиляторе это не нужно.

--enable-gprofng=no — отключает сборку gprofng, который не нужен в кросс-компиляторе.

--disable-werror — отключает остановку сборку при возникновении предупреждений.

--disable-multilib — отключает сборку multilib.

Сборка

make configure-host
make

Значения новых параметров:

make configure-host — проверяет окружение хоста и убеждается, что все необходимые инструменты доступны для компиляции binutils.

Установка

make install

Содержимое пакета

  • Установленные программы: addr2line, ar, as, c+filt, elfedit, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings, strip.
  • Установленные библиотеки: libibery.a, libbbfd.{a,so}, libopcodes.{a,so}

Описание компонентов

  • Программы:
    • addr2line — транслирует адреса программ в имена файлов и номера строк. Если задан адрес и имя исполняемого файла, он использует отладочную информацию в нём, чтобы определить, какой исходный файл или номер строки связаны с этим адресом.
    • ar — создаёт, изменяет и распаковывает ar-архивы.
    • as — GNU-ассемблер, который используется, в частности, в gcc.
    • c++filt — используется компоновщиком для "распутывания" символов C++ и Java и предотвращения столкновения перегруженных функций.
    • elfedit — получает и изменяет метаданные ELF-файлов.
    • gprof — отображение данных профиля графика вызовов.
    • ld — компоновщик, который объединяет несколько объектных и архивных файлов в один файл, перемещая их данные и связывая символьные ссылки.
    • nm — перечисляет символы, встречающиеся в данном объектном файле.
    • objcopy — копирует содержимое одного объектного файла в другой.
    • objdump — отображает информацию о данном объектном файле.
    • ranlib — генерирует индекс содержимого архива и сохраняет его в архиве.
    • readelf — отображает информацию об ELF-файле.
    • size - перечисляет размеры секций ELF-файла и размер для заданных файлов объектов.
    • strings — выводит для каждого заданного файла последовательности печатаемых символов, длина которых не меньше указанной (по умолчанию - четыре); для объектных файлов по умолчанию выводятся только строки из секций инициализации и загрузки, а для других типов файлов сканируется весь файл.
    • strip — удаляет символы из объектных файлов.
  • Библиотеки:
    • libiberty — содержит функции, используемые различными программами GNU, включая getopt, obstack, strerror, strtoul.
    • libbfd — библиотека дескрипторов двоичных файлов.
    • libopcodes — библиотека для работы с опкодами - "читабельными текстовыми" версиями инструкций для процессора. Используется, например, в objdump.