BASH Programming - Введение

         

Ядро не компилируется


Если ядро не компилируется, то скорее всего произошел сбой при накладывании заплатки или ваши исходные тексты были повреждены каким-либо образом. У вас также может быть неправильная версия gcc или также может быть повреждена (например включаемые файлы могут быть с ошибками). Убедитесь, что символические ссылки, которые описывает Linus в файле README установлены правильно. В общем, если стандартное ядро не компилируется, то у час что-то серьезное с системой и вероятно необходима переустановка некоторых утилит.

или возможно вы компилируете ядро 1.2.x при помощи ELF компилятора (gcc 2.6.3 и выше). Если вы получили набор ошибок типа so-and-so undefined в течении компиляции, то скорее всего у вас такая проблема. Исправление в большинстве случаев очень просто. Добавьте эти строки в начало файла arch/i386/Makefile:

AS=/usr/i486-linuxaout/bin/as LD=/usr/i486-linuxaout/bin/ld -m i386linux CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include

Затем заново выполните make dep и zImage.

В редких случаях gcc может не работать из-за аппаратных проблем. Сообщение об ошибке будет примерно такое ``xxx exited with signal 15'' и это в общем будет выглядеть очень загадочно. Я вероятно не должен был здесь это упоминать, за исключением того что это со мной однажды случилось -- у меня была испорченная кэш-память и компилятор время от времени не работал. Попробуйте сначала переставить gcc, если у вас есть такая проблема. ВЫ должны стать подозрительным только если ваше ядро нормально компилируется с отключенным внешним кэшем, с уменьшенным количество оперативной памяти и т.п.

Это имеет склонность беспокоить людей, когда они предполагают, что их оборудование не в порядке. Хорошо, я не буду делать это. Об этом существует FAQ -- он находится на http://www.bitwizard.nl/sig11/.



Содержание раздела