我对扩展单个 Linux 内核文件 (arch/x86/kernel/nmi.c) 的宏很感兴趣。我知道通常可以使用 gcc -E 来扩展宏。然而,由于该文件是 Linux 内核的一部分,因此需要将许多选项传递给 gcc。然后我试图修改内核 Makefile 以传递 -E 标志。
我目前正在修改 /arch/x86/kernel/Makefile,它是用于编译 nmi.c 并通过 make M=arch/x86/kernel 调用这个特定的子 Makefile
我发现可以使用 CFLAGS_nmi.o 传递额外的 gcc 标志。但是将 CFLAGS_nmi.o := -E 添加到 Makefile 并没有预期的效果
这是修改Makefile后的输出
~/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”来尝试重定向输出,但生成的文件是空的。