如何修复 raspbian 上一个奇怪的 linux 内核模块构建问题,该问题在 x64 ubuntu 上运行良好

How to fix a weird linux kernel module build problem on raspbian that works fine on x64 ubuntu

我 运行 解决了这个问题,但我花了一段时间,因为它不是很明显,所以我想 post 如果其他人有这个问题。

我有一个 linux 内核模块,我在 x86 和一堆树莓派 运行ning raspian 上构建。

构建在 x64 ubuntu 上工作正常,当我 运行 从树莓派上的命令行创建时它工作正常。

但是我有一个构建脚本来自动化所有必须构建的东西,只有在那种情况下它才会在 raspians 上失败。

我遇到的错误是:

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+'

对我来说看起来不错,而且它在命令行中运行良好,而不是我的构建脚本。 请参阅下面的解决方案。

我有几个构建不同架构的树莓派,所以在我的构建脚本中添加了

导出 ARCH=uname -m

我会将其附加到构建结果文件名的末尾。

事实证明,关于内核模块构建的一些东西 make forks make -C 再次使用了 ARCH 环境变量,我的脚本意外地改变了它。

我对消息“*** No rule to make target 'arch/armv7l/Makefile'”感到困惑,因为它看起来合法,但显然它是从不正确的 ARCH 环境变量派生的。

我在脚本中更改了 ARCH 变量的名称,它又开始工作了。

希望这对某人有所帮助。