Запустите процесс make ядра Linux для восстановления измененных файлов
-
21-08-2019 - |
Вопрос
I'm создание пользовательского ядра Ubuntu и изменили один из исходных файлов.Когда я выдаю команду сборки:
NOEXTRAS=1 skipabi=true skipmodule=true fakeroot debian/rules binary-insp8600
он перестраивает debs, но ни один из измененных исходных файлов не перестраивается.
Что случилось?Должен ли я выполнять полностью чистую перестройку каждый раз, когда я изменяю исходный файл?
В этом нет никакого смысла.
Измененный файл был ./init/main.c
.
В качестве примечания binary-insp8600 - это пользовательский интерфейс, который я создал для своего ноутбука Inspiron 8600.
Решение
debian/rules
не является Make-файлом ядра.У него нет возможности узнать, что отредактированный вами файл является зависимостью от конечного ядра, поскольку эти зависимости находятся в реальном Makefile.
На самом деле, я бы ожидал, что debian/rules
build
целевой (тот, который фактически выполняет компиляцию), чтобы зависеть только от файла "flag", который он создает после завершения сборки.Если это так, простым обходным решением было бы удалить этот файл "flag";затем он скомпилировал бы все снова (вызвав ядро Makefile
, который знал бы, как выполнить частичную перестройку.Конечно, это предполагает, что build
цель не пытается быть аккуратной и делать make clean
или эквивалент ...)
(Я не смотрел на debian/rules
для пакета, который вы используете, так что я могу ошибаться, но, по крайней мере, это начало.)
Другие советы
Вам не нужно выполнять чистую сборку, если зависимости в Makefile верны.
Является ли файл, который вы изменили, заголовочным файлом?Если это так, то запустите makedepend, чтобы автоматически добавить зависимости файла заголовка :)
Если это не заголовочный файл, то их действительно должна быть зависимость в Makefile, если это часть компиляции, выполните поиск и убедитесь, что используемая вами цель зависит от модуля, который вы хотите скомпилировать