Binutils является колекцией средств разработки программ, содержащих компоновщик, ассемблер и другие средства для работы с объектными файлами.
Расчетное время сборки 1.4 SBU
Требуемое место на диске 167 MB
Binutils зависит от установки: Bash, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed и Texinfo.
Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -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).
Тестирование Binutils на этом этапе является критичным. Не пропускайте его.
Проверим результаты:
make check
Устанавливаем пакет:
make tooldir=/usr install
Установим заголовки libiberty, которые нужны для некоторых пакетов:
cp ../binutils-2.15.91.0.2/include/libiberty.h /usr/include
Проинсталлированные программы: addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings и strip.
Проинсталлированные библиотеки: libiberty.a, libbfd.[a,so] и libopcodes.[a,so].
Транслирует адрес программы в имя файла и номер строки. Адрес и имя исполняемого файла используются с отладочной информацией бинарника для определения исходника и номера строки, ассоциированной с адресом.
Создает, модифицирует и распаковывает из архива.
Ассемблер. Ассемблирует вывод gcc в объектные файлы.
Используется компоновщиком для сортировки символов C++ и Java, для пропуска перезагрузки функций при конфликтах.
Отображает график системных вызовов.
Компоновщик. Он соединяет несколько объектных и архивных файлов в один, переопределяет их данные и устанавливает символические ссылки.
Выводит символы, содержащиеся в объектном файле.
Используется для преобразования из одного типа объектного файла в другой.
Выводит информацию об объектном файле в соответствии с параметрами, определяющими, какую информацию выводить. Выводимая информация, как правило, используется програмистами, работающими со средствами компиляции.
Генерирует список содержимого архива и сохраняет его в архиве. Список содержит все символы, определенные частями архива, которые являются объектными файлами.
Выводит информацию о типе бинарника.
Выводит список размеров частей и общий размер для каждого объектного файла.
Выводит для каждого файла список печатных символов больше указанной длины (по умолчанию 4). Для объектных файлов печатаются только строки из инициализационного и загружаемого разделов. Для других типов файлов выводятся все строки.
Удаляет символы из объектных файлов.
Содержит правила, используемые различными программами GNU, включая getopt, obstack , strerror, strtol и strtoul .
Библиотека двоичого дескриптора файла.
Библиотека для работы с опкодами — “читаемыми” версиями инструкций процессора, используется в сборке утилит вроде objdump.