Теперь, когда установлены финальные библиотеки C, пришло время снова настроить набор инструментальных средств. Набор инструментальных средств будет скорректирован таким образом, чтобы он компоновал любые вновь компилируемые программы с этими новыми библиотеками. Эта процедура аналогична процедуре, использованной на фазе "настройки" в начале главы 5, но она будет обратной. В главе 5 была выполнена перенастройка с директориев /{,usr/}lib, имеющихся в хост системе, на новый директорий /tools/lib. Теперь, перенастройка будет выполняться с того же самого директория /tools/lib на директории /{,usr/}libсистемы LFS.
Сначала сделаем резервную копию компоновщика, находящегося в директории /tools, и заменим его компоновщиком, который был создан в главе 5. Мы также создадим ссылку на его эквивалент, находящийся в директории /tools/$(gcc -dumpmachine)/bin:
Затем изменим файл спецификаций GCC так, чтобы он указывал на новый динамический компоновщик. Простое удаление всех вхождений "/tools" должно дать нам правильный путь к динамическому компоновщику. Также настройте файл спецификаций так, чтобы компилятору GCC было известно, где найти правильные заголовки и стартовые файлы библиотеки Glibc. Эту задачу можно решить с помощью команды sed:
Было бы хорошо визуально просмотреть файл спецификации с тем, чтобы проверить, какие из предполагаемых изменений были в действительности сделаны.
В этом месте нужно убедиться, что основные функции (компиляция и компоновка) перенастроенного набора инструментальных средств работают так, как это ожидалось. Для выполнения чистовой проверки, выполните следующие команды:
Если все работает правильно, то ошибок быть не должно, а последняя выданная строка будет иметь следующий вид (с учетом разницы именования динамического компоновщика, зависящего от платформы):
[Requesting program interpreter: /lib/ld-linux.so.2]
Заметим, что в качестве префикса динамического компоновщика теперь будет /lib.
Теперь удостоверьтесь, что мы сделали настройки, позволяющие использовать правильные стартовые файлы:
Затем проверьте, чтобы мы использовали правильную библиотеку libc:
grep "/lib.*/libc.so.6 " dummy.log
Если все работает правильно, то ошибок быть не должно, а последняя выданная строка будет иметь следующий вид (с учетом того, что для хостов с 64-разрядной архитектурой будет использована библиотека lib64):
attempt to open /lib/libc.so.6 succeeded
Наконец проверьте, что компилятор GCC использует правильный динамический компоновщик:
grep found dummy.log
Если все работает правильно, то ошибок быть не должно, а последняя выданная строка будет иметь следующий вид (с учетом разницы именования динамического компоновщика, зависящего от платформы, и учетом того, что для хостов с 64-разрядной архитектурой будет использована библиотека lib64):
found ld-linux.so.2 at /lib/ld-linux.so.2
Если вывод не такой, как показано выше, или вообще ничего не выдано, то где-то серьезная ошибка. Изучите и повторите все шаги с тем, чтобы выяснить, в чем проблема, и устраните ее. Возможно, что в процессе правки файла спецификаций что-то было сделано неверно. Проблему нужно решить раньше, чем двигаться дальше.
После того, как все будет проверено, удалите тестовые файлы: