Получить процесс сборки ядра Linux для восстановления измененных файлов - PullRequest
1 голос
/ 29 июня 2009

Я собираю собственное ядро ​​Ubuntu и изменил один из исходных файлов. Когда я запускаю команду сборки:

NOEXTRAS=1 skipabi=true skipmodule=true fakeroot debian/rules binary-insp8600

восстанавливает debs, но ни один из измененных исходных файлов не восстанавливается.

Что случилось? Нужно ли делать полностью чистую перестройку каждый раз, когда я изменяю исходный файл?

Это не имеет никакого смысла.

Изменен файл: ./init/main.c.

Как примечание binary-insp8600 - это пользовательский вариант, который я создал для своего ноутбука Inspiron 8600.

Ответы [ 2 ]

2 голосов
/ 29 июня 2009

debian/rules не является Makefile ядра. Он не может знать, что отредактированный вами файл является зависимостью конечного ядра, поскольку эти зависимости находятся в реальном Makefile.

Фактически, я ожидал бы, что цель debian/rules build (та, которая фактически выполняет компиляцию) будет зависеть только от файла "flag", который он создает после завершения сборки. Если это так, простой обходной путь - удалить этот файл «флага»; Затем он снова все скомпилирует (вызывая ядро ​​Makefile, которое будет знать, как выполнить частичное перестроение. Конечно, предполагается, что цель build не пытается быть аккуратной и делает make clean или эквивалентный. ..)

(Я не смотрел на debian/rules для пакета, который вы используете, поэтому я могу ошибаться, но по крайней мере это начало.)

0 голосов
/ 29 июня 2009

Вам не нужно делать чистую сборку, если зависимости в Makefile верны.

Является ли файл, который вы изменили, заголовочным файлом? Если это так, запустите makedepend, чтобы автоматически добавить зависимости файла заголовка:)

Если это не заголовочный файл, тогда он действительно должен быть зависимостью в Makefile, если он является частью компиляции, выполнить поиск и убедиться, что используемая цель зависит от модуля, который вы хотите скомпилировать

...