Детальная информация о пакете находится в Разделе 6.13.2, “Описание Binutils”.
Библиотека сайта rus-linux.net
5.4. Binutils-2.15.91.0.2 - Шаг 1
Binutils является колекцией средств разработки программ, содержащих компоновщик, ассемблер и другие средства для работы с объектными файлами.
Расчетное время сборки 1.0 SBU
Требуемое место на диске 194 MB
Binutils - зависимости установки: Bash, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed и Texinfo
5.4.1. Инсталируем Binutils
Важно чтобы Binutils был первым из пакетов, которые мы установим, потому что Glibc и GCC проводят некоторые тесты на доступные компоновщик и ассемблер для определения доступных опций.
Этот пакет известен своим нестабильным поведением при компиляции
с измененными опциями оптимизации (включая опции -march
и
-mcpu
). Binutils рекомендуется компилировать
с настройками по умолчанию. Если вы задали переменные такие как CFLAGS или CXXFLAGS,
изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при
сборке пакета binutils. Изменяя оптимизации для binutils, вы действуете на свой страх и риск.
В документации по Binutils рекомендуется собирать Binutils вне директории с исходниками, в отдельной директории для сборки:
mkdir ../binutils-build cd ../binutils-build
Замечание
Если вы хотите вычислить переменную SBU, которая
используется в этой книге, вам надо засечь время, которое понадобится
на сборку этого пакета. Это очень просто сделать чем-то похожим на
такую команду:
time { ./configure ... && ...
&& ... && make install; }
.
Теперь подготовим Binutils к компиляции:
../binutils-2.15.91.0.2/configure --prefix=/tools \ --disable-nls
Описание используемых опций:
-
--prefix=/tools
-
Это скажет скрипту конфигурации, что программы Binutils следует устанавливать в директорию
/tools
-
--disable-nls
-
Это отключит интернационализацию (сокращенно - i18n). Вопервых нам это пока не надо. А вовторых это может вызвать определенные проблемы при статической компиляции.
Вернемся к компиляции пакета:
make configure-host make LDFLAGS="-all-static"
Описание параметров сборки:
-
configure-host
-
Это правильно настроит все субдиректории. Статичаская сборка без этого будет невозможна. Мы используем эту опцию для обеспечения беспроблемной работы.
-
LDFLAGS="-all-static"
-
Это скажет компоновщику, что все программы Binutils будут скомпонованы статически. Точнее, строго говоря,
"-all-static"
отсылается программе libtool , которая отсылает"-static"
компоновщику.
Компиляция проведена. Обычно мы запускаем тест, но на этой ранней стадии требуемые для выполнения теста программы (Tcl, Expect и DejaGNU) еще отсутствуют на своем месте. Кроме того, запускать тест на этом этапе сборки нет смысла, т.к. мы скоро заменим binutils на втором шаге.
Устанавливаем пакет
make install
Теперь подготовим компоновщик к последующему "встраиванию" в Glibc на следующей фазе сборки:
make -C ld clean make -C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib
Описание параметров сборки:
-
-C ld clean
-
Это говорит программе сборки удалить все скомпилированые файлы в субдиректории
ld
. -
-C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib
-
Этот параметр пересоберет все в субдиректории
ld
. Указание переменнойLIB_PATH
файла сборки Makefile в коммандной строке заменит установленное значение по умолчанию на расположение наших временных средств. Содержимое этой переменной указывает путь по умолчанию для поиска библиотек компоновщиком.
Внимание
Не удаляйте сейчас директории для сборки и исходников Binutils. Вам они еще будут нужны в этой главе далее в их теперешнем состоянии.