Makefile 在构建内核模块时覆盖HOSTCFLAGS的一些选项

Makefile 在构建内核模块时覆盖HOSTCFLAGS的一些选项,makefile,linux-kernel,Makefile,Linux Kernel,在构建特定的内核模块时,是否可以设置O0或O1?原因是我需要使用KGDB来调试特定的内核模块,它更喜欢编译而不是优化代码 在内核源代码的根目录的Makefile中,HOSTCFLAGS默认设置为O2,这使得一些内核调试功能不好(例如:变量优化) 如果在根目录中的Makefile处设置O0/O1,这会改变整个内核源代码的编译行为,那就不好了。HOSTCFLAGS变量会影响辅助程序的构建,然后用于构建内核及其模块。对于更改构建内核模块,您需要更改KBUILD\u CFLAGS,例如在给定模块的Mak

在构建特定的内核模块时,是否可以设置O0或O1?原因是我需要使用KGDB来调试特定的内核模块,它更喜欢编译而不是优化代码

在内核源代码的根目录的Makefile中,HOSTCFLAGS默认设置为O2,这使得一些内核调试功能不好(例如:变量优化)


如果在根目录中的Makefile处设置O0/O1,这会改变整个内核源代码的编译行为,那就不好了。

HOSTCFLAGS
变量会影响辅助程序的构建,然后用于构建内核及其模块。对于更改构建内核模块,您需要更改
KBUILD\u CFLAGS
,例如在给定模块的
Makefile
中使用
ccflags-y:=-O1
。请注意,优化级别
O0
可能会中断linux内核的构建过程。有关构建模块的更多信息,请参阅。太好了,非常感谢Tsyvarev!我刚刚尝试将“KBUILD\u CFLAGS+=-Og”添加到模块的Makefile中,它可以工作:)问题已经解决了。