我正在尝试在我的 Linux 机器上交叉编译(arm64)自定义模块。所以到目前为止我所做的是:
- 安装目标内核源
- 安装交叉编译器
- 启用模块并使用交叉编译器构建内核。到目前为止,一切顺利,最后我正确构建了一个“图像”文件
现在,我正在尝试构建我的模块。我移动到我有源的文件夹中。这是生成文件:
bj-m := my_module.o
PWD := $(shell pwd)
DEBUG := 1
my_module-objs += my_module_core.o my_module_utils.o
ccflags-y += -O2 -Wall -DDEBUG
all:
make ARCH=arm64 CROSS_COMPILE=$(CROSS) -C $(KERNEL) M=$(PWD) modules
然后我尝试运行构建
make KERNEL=/tmp/linux-kernel-src/ CROSS=aarch64-linux-gnu-
我得到这个结果:
make[1]: Entering directory '/tmp/linux-kernel-src'
Building modules, stage 2.
MODPOST 0 modules
make[1]: Leaving directory '/tmp/linux-kernel-src'
所以看起来我没有错误,但构建过程只是跳过当前文件夹中应编译的所有文件,并且没有任何反应。
我想我错过了一些明显的东西......但我没有抓住什么......你有什么想法吗?
我看到另一篇文章有一个非常相似的问题(构建内核模块),但这在路径中有一个方括号,这不是我的情况。
多谢!
答案1
好吧,我正式傻了!我发现了,只是Makefile开头少了“o”
:-(
obj-m := my_module.o
非常遗憾!