0

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

obj-m += hello.o 

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

4

1 回答 1

2

实际上,在包含用户 Makefile 之前,Kbuild 会obj-m与其他一些变量一起重置(参见scripts/Makefile.build+= ),因此和分配之间没有区别:=(假设只有hello.o一行)。

我个人更喜欢附加赋值(+=)。这可以防止一些愚蠢的错误,如下所示:

obj-m := hello.o
obj-m := world.o

如果最后一行是第一行的复制粘贴,而您忘记将赋值类型更改为+=,那么您只会得到world.o编译(没有hello.o)。

我还建议您阅读有关如何编写模块 makefile的 Kbuild 文档。

于 2012-02-08T11:18:13.757 回答