例如:常见设备模块的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
我考虑是否可以将 CFLAGS 设置为该文件。当我改变时default节至
$(MAKE) -O2 -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules
但这没有用。
有什么帮助吗?多谢。
-O2
将是一个选择make
(or $(MAKE)
,正如您正在使用的那样)在您尝试过的内容中。显然,编译器(可能gcc
) 需要这个标志,而不是make
.
Kbuild 理解名为的 make 变量CFLAGS_modulename.o
在编译此单元时添加特定的 C 标志。在你的情况下,你的模块对象将是jc.o
,因此您可以指定:
CFLAGS_jc.o := -O2
它应该有效。添加V=1
给你的$(MAKE)
获得详细输出的行,你应该看到-O2
when jc.c
正在编译中。
您可以在中找到有关编译模块的更多信息官方文档 https://www.kernel.org/doc/Documentation/kbuild/modules.txt.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)