5.2. Binutils-2.43.1 - Проход 1

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

Приблизительное время сборки: 1 SBU
Требуемое дисковое пространство: 677 MB

5.2.1. Установка кросс-пакета Binutils

[Примечание]

Примечание

Вернитесь назад и перечитайте примечания в разделе Общие инструкции по компиляции. Понимание информации, помеченной как важная, может впоследствии избавить вас от многих проблем.

Очень важно, чтобы Binutils был скомпилированным первым, потому что и Glibc, и GCC выполняют различные тесты на доступных компоновщике и ассемблере, чтобы определить, какие из их функций следует включить.

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

mkdir -v build
cd       build
[Примечание]

Примечание

Для того, чтобы значения SBU, перечисленные в остальной части книги, были вам полезны, измерьте время, необходимое для сборки этого пакета, начиная с настройки и заканчивая установкой. Чтобы добиться этого, оберните команды сборки командой time: time { ../configure ... && make && make install; }.

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

../configure --prefix=$LFS/tools \
             --with-sysroot=$LFS \
             --target=$LFS_TGT   \
             --disable-nls       \
             --enable-gprofng=no \
             --disable-werror    \
             --enable-new-dtags  \
             --enable-default-hash-style=gnu

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

--prefix=$LFS/tools

Указывает сценарию configure подготовить к установке пакет Binutils в каталог $LFS/tools.

--with-sysroot=$LFS

Для кросс-компляции указывает системе сборки искать в $LFS библиотеки целевой системы, если необходимо.

--target=$LFS_TGT

Поскольку название машины в значении переменной LFS_TGT может отличаться от значения, которое возвращает сценарий config.guess, этот аргумент укажет сценарию configure как настроить систему сборки пакета Binutils для создания кросс-компоновщика.

--disable-nls

Этот параметр отключает интернационализацию, так как i18n не требуется для временных инструментов.

--enable-gprofng=no

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

--disable-werror

Этот параметр предотвращает остановку сборки в случае появления предупреждений от компилятора хоста.

--enable-new-dtags

Этот параметр заставляет компоновщик использовать тег «runpath» для встраивания путей поиска библиотек в исполняемые файлы и общие библиотеки вместо традиционного тега «rpath». Это упрощает отладку динамически подключаемых исполняемых файлов и устраняет потенциальные проблемы в наборах тестов некоторых пакетов.

--enable-default-hash-style=gnu

По умолчанию компоновщик генерирует как хеш-таблицу в стиле GNU, так и классическую хеш-таблицу ELF для общих библиотек и динамически связанных исполняемых файлов. Хеш-таблицы необходимы только для динамического компоновщика, выполняющего поиск символов. В LFS динамический компоновщик (предоставляемый пакетом Glibc) всегда будет использовать хеш-таблицу в стиле GNU, к которой запросы выполняются быстрее. Так что классическая хеш-таблица ELF совершенно бесполезна. Этот параметр указывает компоновщику по умолчанию генерировать только хеш-таблицу в стиле GNU, поэтому мы можем избежать траты времени на создание классической хеш-таблицы ELF при сборке пакетов или не тратить дисковое пространство для ее хранения.

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

make

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

make install

Подробная информация об этом пакете находится в Раздел 8.20.2, «Содержимое пакета Binutils.»