6.13. Binutils-2.15.91.0.2

6.13. Binutils-2.15.91.0.2

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

Расчетное время сборки 1.4 SBU

Требуемое место на диске 167 MB

Binutils - зависимости установки: Bash, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed и Texinfo

6.13.1. Инсталируем Binutils

Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu ) . Binutils рекомендуется компилировать с настройками по умолчанию. Если вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета binutils.

Проверьте, что псевдо терминалы (PTY) работают корректно внутри среды chroot, выполнив. простой тест:

expect -c "spawn ls"

Если вы получили сообщение вида:

The system has no more ptys.  
Ask your system administrator to create more.

то ваша среда chroot не может оперировать PTY. В этом случае вам не стоит запускать тестирование для Binutils и GCC до того, как вы это исправите.

В документации по Binutils рекомендуется собирать Binutils вне директории с исходниками, а в отдельной директории для сборки:

mkdir ../binutils-build
cd ../binutils-build

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

../binutils-2.15.91.0.2/configure --prefix=/usr \
    --enable-shared

Компилируем пакет

make tooldir=/usr

Обычно, директория со средствами (директория, где располагаются исполняемые файлы) устанавливается в $(exec_prefix)/$(target_alias), где они и располагаются, например, /usr/i686-pc-linux-gnu. Когда мы собираем средства только для своей системы, нам достаточно установить все просто в директорию /usr. Такая установка нужна только в случае использования cross-компиляции (к примеру, компилируем пакет на машине Intel, но нам нужен код для работы на платформе PowerPC).

[Important]

Важно

Тестирование Binutils на этом этапе является критичным. Не пропускайте его.

Проверим результаты:

make check

Устанавливаем пакет

make tooldir=/usr install

Установим заголовки libiberty, которые нужны для некоторых пакетов:

cp ../binutils-2.15.91.0.2/include/libiberty.h /usr/include

6.13.2. Описание Binutils

Проинсталированные программы: addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings и strip

Проинсталированные библиотеки: libiberty.a, libbfd.[a,so] и libopcodes.[a,so]

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

addr2line

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

ar

Создает, модифицирует и распаковывает из архива.

as

Ассемблер. Ассемблирует вывод gcc в объектные файлы.

c++filt

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

gprof

Отображает график системных вызовов.

ld

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

nm

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

objcopy

Используется для преобразования из одного типа объектного файла в другой.

objdump

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

ranlib

Генерирует список содержимого архива и сохраняет его в архиве. Список содержит все символы, определенные частями архива, которые являются объектными файлами.

readelf

Выводит информацию о типе бинарника.

size

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

strings

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

strip

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

libiberty

Содержит правила, используемые различными программами GNU, включая getopt, obstack, strerror, strtol и strtoul

libbfd

Библиотека двоичого дескриптора файла.

libopcodes

Библиотека для работы с опкодами — “читаемыми” версиями инструкций процессора; используется в сборке утилит вроде objdump.