C语言 编译 Linux 内核时扩展单个文件的宏



我对扩展单个Linux内核文件(arch/x86/kernel/nmi.c(的宏感兴趣。我知道通常可以使用 gcc -E 来扩展宏。但是,由于该文件是 Linux 内核的一部分,因此需要将许多选项传递给 gcc。然后我尝试修改内核 Makefile 以传递 -E 标志。

我目前正在修改/arch/x86/kernel/Makefile,它是用于编译 nmi.c 并通过以下方式调用此特定子 Makefile 的 使 M=arch/x86/kernel

我发现可以使用 CFLAGS_nmi.o 传递额外的 gcc 标志。但是添加 CFLAGS_nmi.o := -E到生成文件没有预期的效果

这是修改生成文件后的输出

~/git/linux$ make M=arch/x86/kernel
CC      arch/x86/kernel/nmi.o
AR      arch/x86/kernel/built-in.a
Building modules, stage 2.
MODPOST 3 modules

我希望扩展代码在"CC arch/x86/kernel/nmi.o"行之后。我还尝试了"CFLAGS_nmi.o := -E> nmi.out"来尝试重定向输出,但生成的文件为空。

添加

CFLAGS_nmi.o := -save-temps=obj

做到了。谢谢!

相关内容

  • 没有找到相关文章

最新更新