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