linux - Linux Makefile 中的目标文件寻址

标签 linux makefile kbuild

我正在 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/

相关文章:

c - 如何锁定文件以进行 O_RDWR 的读写访问

c++ - opencv中acos函数错误

linux - 使用shell脚本重命名目录及其子目录中的文件夹?

c++ - 如何将所有目标文件放入目录

c -/usr/bin/ld : cannot find -lc while compiling with makefile

linux - 如何在内核 Makefile 中正确 make clean

linux - 将 ant1.8 或更高版本安装到 Scientific Linux 6

linux - 发送参数到 make (Linux)

linux-kernel - Linux 内核的 `make defconfig` 究竟是做什么的?

linux - Linux内核编译时输出的CC、LD、CC[M]等代码是什么?