我正在 Linux 中编写一个简单的设备驱动程序。在 makefile 中,我们通常将第一行写为
obj-m += hello.o
其中 hello
是编写的模块。我在其他 makefile 中看到符号 +=
被替换为 :=
和其他一些。两者之间的显着区别是什么?可能的选择是什么?
最佳答案
实际上,Kbuild 在包含用户 Makefile 之前重置了 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 文档.
关于linux - Linux Makefile 中的目标文件寻址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9192138/