Как исправить странную проблему сборки модуля ядра linux на raspbian, которая отлично работает на x64 ubuntu - PullRequest
0 голосов
/ 30 мая 2020

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

I у меня есть модуль ядра linux, который я строю на x86 и на кучу raspberry pis, на которой работает raspian.

сборка отлично работает на x64 ubuntu, и она отлично работает, когда я запускаю make из командной строки на raspberry пис.

Но у меня есть сценарий сборки для автоматизации всего, что необходимо для сборки, и только в этом случае он не работал на распиах.

я получал следующую ошибку:

make[1]: Entering directory '/usr/src/linux-headers-4.19.75-v7+' Makefile:614: arch/armv7l/Makefile: No such file or directory make[1]:
*** No rule to make target 'arch/armv7l/Makefile'.  Stop. make[1]: Leaving directory '/usr/src/linux-headers-4.19.75-v7+'

Все выглядело нормально и отлично работало из командной строки, но не из моего сценария сборки. Решение см. Ниже.

1 Ответ

0 голосов
/ 30 мая 2020

У меня есть несколько raspberry pis, которые создают разные архитектуры, поэтому в моем сценарии сборки я добавил

export ARCH = uname -m

, и я бы добавил это в конец имя файла результата сборки.

Оказывается, что-то в сборке модуля ядра, где make forks make - C снова использует переменную среды ARCH, которую мой скрипт неожиданно изменил.

Я был смущает сообщение «*** Нет правила для создания цели 'arch / armv7l / Makefile'», потому что это выглядит как файл git, но, очевидно, это было получено из неправильной переменной среды ARCH.

Я изменяю имя переменной ARCH в скрипте, и все снова заработало.

Надеюсь, это кому-то поможет.

...