【发布时间】:2019-12-16 17:18:06
【问题描述】:
我正在分析 Linux Kernel Makefiles 包。我们可以定义一个额外的编译器标志来使用ccflags-y += -std=gnu11 -Wno-declaration-after-statement -Werror 构建外部模块。我查看了Makefile.build 哪个外部模块构建下降,甚至没有注意到ccflags-m 选项定义。完整的选项列表:
obj-y :=
obj-m :=
lib-y :=
lib-m :=
always :=
targets :=
subdir-y :=
subdir-m :=
EXTRA_AFLAGS :=
EXTRA_CFLAGS :=
EXTRA_CPPFLAGS :=
EXTRA_LDFLAGS :=
asflags-y :=
ccflags-y :=
cppflags-y :=
ldflags-y :=
subdir-asflags-y :=
subdir-ccflags-y :=
据我了解y 和m 在kbuild 中的含义,m - 用于可加载模块,y - 用于内置模块。所以用ccflags-y而不是ccflags-m指定编译器选项似乎不合逻辑。
问题:为什么ccflags-y 没有-m 对应的ccflags-m 可加载模块?
【问题讨论】:
-
您错误地理解了
ccflags-y的意图:它适用于所有 目标,无论是模块还是内置。参见例如that answer.
标签: c linux makefile linux-kernel kbuild