Библиотека сайта rus-linux.net
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] Заметим, что в качестве префикса динамического компоновщика может указываться Если вывод не такой, как показано выше, или вообще ничего не выдано, то где-то ошибка. Изучите и повторите все шаги с тем, чтобы выяснить, в чем проблема и устраните ее. Проблему нужно решить раньше, чем двигаться дальше. Возможно, что-то было сделано неверно в процессе правки файла спецификаций, описанном выше. В этом случае повторите изменения в файле спецификации, будьте аккуратны при копировании и вставке (copy-and-paste). После того, как все будет проверено, удалите тестовые файлы: rm -v dummy.c a.out |
ЗамечаниеСборка пакета Binutils в следующем разделе будет служить дополнительной проверкой, что набор инструментов был построен правильно. Если пакет Binutils собрать не удастся, то это признак того, что что-то в предыдущих установках пакетов Binutils, GCC или Glibc было сделано не так. |
Предыдущий раздел: | Оглавление | Следующий раздел: |
Пакет Glibc-2.13 | Пакет Binutils-2.21 - Второй проход |