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).
Важно
Тестирование 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]
Короткое описание
- 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.