是否可以将CFLAGS设置为linux内核模块Makefile?
例如:一个公共设备模块的Makefile是否可以将CFLAGS设置为linux内核模块Makefile?,makefile,linux-kernel,linux-device-driver,Makefile,Linux Kernel,Linux Device Driver,例如:一个公共设备模块的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设置到文件中。当我将默认部分更改为 $(MAKE) -O2
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设置到文件中。当我将默认部分更改为
$(MAKE) -O2 -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules
但它不起作用
有什么帮助吗?非常感谢。
-O2
将是您尝试使用的制作
(或$(制作)
)的一个选项。显然,编译器(可能是gcc
)需要这个标志,而不是make
Kbuild理解名为CFLAGS\u modulename.o的make变量,以便在编译此单元时添加特定的C标志。在您的情况下,模块对象将是jc.o
,因此您可以指定:
CFLAGS_jc.o := -O2
它应该会起作用。将V=1
添加到$(MAKE)
行以获得详细的输出,当编译jc.c
时,您应该会看到-O2
您可以在中找到有关编译模块的更多信息。您也可以使用
ccflags-y := -O2
这将应用于使用Makefile为模块编译的所有源文件。这间接地记录在eepp提供的链接中,$$PWD
可以替换$(shell PWD)
这将覆盖一些内部生成文件
中的ccflags-y
设置,结果将中断.h
文件查找。对我来说,它有助于使用额外的标签
。它在scripts/Makefile.lib
中被引用为“向后兼容性”,并被添加到ccflags-y
,因此不会破坏任何内容。ccflags-y+=-O2
应该可以工作。它显示在文档/kbuild/modules.txt
中。