【发布时间】:2019-01-18 19:24:27
【问题描述】:
我正在学习操作系统课程,我们被要求解释给定 makefile 的语法。但是,我无法理解内容:
Obj -m += simple.o
all:
make -C/lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C/lib/modules/$(shell uname -r)/build M=$(PWD) clean
我不明白的主要部分是第一行。据我所知,“Obj”是一个变量名“-m”是一个标志“+=”是连接运算符“simple.o”是目标文件。即使我知道这些部分,我也不知道这条线是做什么的。我进行了广泛搜索,但找不到“-m”标志的任何解释。它只出现在一个列表中,说明编译器知道忽略它,请参阅此处https://www.gnu.org/software/make/manual/html_node/Options-Summary.html。有人可以解释一下这条线的含义和作用吗?
感谢您的帮助。
【问题讨论】:
-
您的第一行打错了。这是 make 中的语法错误,这可能是您不理解它的原因。我敢肯定,在您给定的 makefile 中,它实际上是
Obj-m += simple.o(Obj和-m之间没有空格)。 -
在任何情况下,
-m选项都会被忽略,具体取决于您链接到的页面;如果不是,这将不是您启用它的方式。 -
谢谢,这很有道理。我习惯于看到由 -(flag) 表示的标志,我认为 -m 一定是一个标志。