我正在 Linux 中编写一个简单的设备驱动程序。在makefile中,我们通常将第一行写为
obj-m += hello.o
hello
模块写在哪里。我在其他 makefile 中看到了+=
被替换的符号:=
和其他一些符号。两者之间有什么显着区别,还有哪些可能的选择?
实际上,在包含用户 Makefile 之前,Kbuild 会obj-m
与其他一些变量一起重置(参见scripts/Makefile.build+=
),因此和分配之间没有区别:=
(假设只有hello.o
一行)。
我个人更喜欢附加赋值(+=
)。这可以防止一些愚蠢的错误,如下所示:
obj-m := hello.o
obj-m := world.o
如果最后一行是第一行的复制粘贴,而您忘记将赋值类型更改为+=
,那么您只会得到world.o
编译(没有hello.o
)。
我还建议您阅读有关如何编写模块 makefile的 Kbuild 文档。