Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Linux From Scratch (version 6.8)
Назад Глава 5. Создание временной версии системы Вперед

5.8. Настройка набора инструментальных средств

Теперь, когда временные библиотеки языка C установлены, все остальные инструментальные средства, которые будут скомпилированы в оставшейся части этой главы, будут компоноваться с этими библиотеками. Чтобы это сделать, нужно так скорректировать файл спецификаций кросс компилятора, чтобы он указывал на новый динамический компоновщик, находящийся в директории /tools.

Сделайте дамп "спецификаций" компилятора в файл, который сохраните в удобном для просмотре месте. Затем, с помощью команды sed простой подстановки сделайте замену на динамический компоновщик GCC, который будет использоваться. Принцип следующий - найти все ссылки на файл динамического компоновщика, расположенного в директории /lib, или, возможно, в директории /lib64, если хост система является 64-разрядной, и изменить их так, чтобы они указывали на новое место в директории /tools.

Когда вы будете вводить следующий текст, то для того, чтобы все сделать аккуратно, воспользуйтесь копированием и вставкой (copy-and-paste). Обязательно визуально проверьте файл спецификаций, чтобы убедиться, что все ссылки на месторасположение динамического компоновщика исправлены правильно. Имя динамического компоновщика, если это необходимо, смотрите в разделе 5.2 "Технические замечания об инструментальном наборе".

SPECS=`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/specs
$LFS_TGT-gcc -dumpspecs | sed \
  -e 's@/lib\(64\)\?/ld@/tools&@g' \
  -e "/^\*cpp:$/{n;s,$, -isystem /tools/include,}" > $SPECS 
echo "New specs file is: $SPECS"
unset SPECS

Предупреждение

В этом месте нужно остановиться и убедиться, что основные функции (компиляция и компоновка) нового набора инструментальных средств работают так, как это ожидалось. Для выполнения чистовой проверки, выполните следующие команды:

echo 'main(){}' > dummy.c
$LFS_TGT-gcc -B/tools/lib dummy.c
readelf -l a.out | grep ': /tools'

Если все работает правильно, то ошибок быть не должно, а последняя выданная строка будет иметь следующий вид:

[Requesting program interpreter: /tools/lib/ld-linux.so.2]

Заметим, что в качестве префикса динамического компоновщика может указываться /tools/lib, либо /tools/lib64 для 64-битных машин.

Если вывод не такой, как показано выше, или вообще ничего не выдано, то где-то ошибка. Изучите и повторите все шаги с тем, чтобы выяснить, в чем проблема и устраните ее. Проблему нужно решить раньше, чем двигаться дальше. Возможно, что-то было сделано неверно в процессе правки файла спецификаций, описанном выше. В этом случае повторите изменения в файле спецификации, будьте аккуратны при копировании и вставке (copy-and-paste).

После того, как все будет проверено, удалите тестовые файлы:

rm -v dummy.c a.out

Замечание

Сборка пакета Binutils в следующем разделе будет служить дополнительной проверкой, что набор инструментов был построен правильно. Если пакет Binutils собрать не удастся, то это признак того, что что-то в предыдущих установках пакетов Binutils, GCC или Glibc было сделано не так.


Предыдущий раздел: Оглавление Следующий раздел:
Пакет Glibc-2.13   Пакет Binutils-2.21 - Второй проход