WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Теперь, когда мы установили новую библиотку C, пришло время
переустановить наши средства. Это надо для того, чтобы вновь
скомпилированные программы использовали именно новую библиотеку C.
То, что мы сейчас сделаем, это реверс того, что мы делали
на этапе “интеграции”
в начале главы 5.
В главе 5
была проведена цепь из основных каталогов /{,usr/}lib
в новый каталог /tools/lib. Теперь цепь будет
проведена из этого самого каталога /tools/lib в
LFS /{,usr/}lib. Первым делом мы отрегулируем компоновщик. Для этого мы вернемся к
каталогам с исходниками и сборкой из второго шага установки Binutils.
Установим отрегулированный компоновщик запуском следующей
команды из каталога binutils-build: Если Вы пропустили предупреждение о нежелательности удаления
каталогов с исходниками и сборкой Binutils на втором шаге их установки в
главе 5 или по другим
причинам удалили их (или у Вас нет доступа к ним), не беспокойтесь, еще
не все потеряно. Просто проигнорируйте вышеприведенную команду.
В результате следующий пакет Binutils будет скомпонован с
использованием библиотек Glibc из /tools вместо
/{,usr/}lib. Это не идеально, но наше тестирование
показывает, что в обоих случаях бинарники Binutils будут идентичными. С этого момента все компилируемые программы будут собираться только с
использованием библиотек из /usr/lib и
/lib. Параметр
INSTALL=/tools/bin/install необходим потому, что
файл Makefile, созданный на втором шаге, содержит
ссылки на /usr/bin/install,
который пока не установлен. Некоторые дистрибутивы содержат ссылку
ginstall, которая имеет первенство в файле
Makefile, а это может создать здесь проблему.
Вышеуказанная команда также решает и эту проблему. Теперь можете удалить каталоги с Binutils. Теперь нам необходимо исправить точки в spec-файлах GCC, которые
указывают на динамический компоновщик так, чтобы они указывали
на новый компоновщик. Выполним следующее: После этого также неплохо было бы проверить spec-файлы, чтобы
убедиться в сделанных изменениях. Если Вы работаете на платформе, на которой имя динамического
компоновщика отличается от ld-linux.so.2,
замените “ld-linux.so.2”
на имя компоновщика для Вашей платформы в вышеуказанной команде.
Вернитесь к разделу
5.3. “Технические моменты”, если необходимо. На этом месте необходимо остановиться и убедиться, что основные
функции (компиляция и компоновка) новых средств работают корректно.
Для этого есть простой тест: Если все в порядке, то не будет ошибок, и на выводе Вы увидите: Заметьте, что /lib теперь является
префиксом нашего компоновщика. Если эта надпись вообще не появилась или появилась другая, то что-то
сильно не так. Вам надо исследовать и повторить все пройденные шаги,
чтобы найти в чем проблема и устранить ее. Точки для возврата после
этого места уже не будет. Как правило, что-то не так бывает с
вышеописаной правкой specs-фала. Любые проблемы необходимо устранить
перед продолжением процесса. Если все прошло нормально, удалим тестовые файлы:
Linux From Scratch. Версия 6.0
Глава 6. Установка основных системных программ
6.12. Переустановка средств
make -C ld INSTALL=/tools/bin/install install
Замечание
sed -i 's@ /tools/lib/ld-linux.so.2@ /lib/ld-linux.so.2@g' \
`gcc --print-file specs`
Важно
Предупреждение
echo 'main(){}' > dummy.c
cc dummy.c
readelf -l a.out | grep ': /lib'
[Requesting program interpreter: /lib/ld-linux.so.2]
rm dummy.c a.out
Найди своих коллег! |