例如:常见设备模块的Makefile
obj-m:=jc.o
default:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules
clean:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules clean
我想知道是否可以为这个特定的 Makefile 设置
gcc
的 CFLAGS
。当我将 default 部分更改为(注意添加 -O2
)时:
$(MAKE) -O2 -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules
更改不会生效(即 -
-O2
未添加到 CFLAGS
)。
有什么帮助吗? 非常感谢。
-O2
将是make
(或$(MAKE)
,当您使用它时)的一个选项。显然,编译器(可能gcc
)需要这个标志,而不是make
。
Kbuild 理解名为
CFLAGS_modulename.o
的 make 变量,以便在编译此单元时添加特定的 C 标志。在您的情况下,您的模块对象将是 jc.o
,因此您可以指定:
CFLAGS_jc.o := -O2
它应该可以工作。将
V=1
添加到您的 $(MAKE)
行以获得详细输出,并且在编译 -O2
时您应该看到 jc.c
。
您可以在官方文档中找到有关编译模块的更多信息。