Linux Makefile中的对象文件寻址

时间:2012-02-08 11:07:50

标签: linux makefile kbuild

我正在Linux中编写一个简单的设备驱动程序。在makefile中,我们通常将第一行写为

obj-m += hello.o 

其中hello是编写的模块。我在其他makefile中看到符号+=:=和其他一些替换。两者之间有什么重大区别,还有哪些可能的选择?

1 个答案:

答案 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文档。