jot*_*tik 4 build-system linux-kernel
由于某些原因,我需要编译Linux内核(当前为4.7.10),并将一些简单且无害的附加命令行选项(例如,-pipe -Wsomethingetc)传递给C编译器。
我该怎么做?
更具体地说,我如何在普通make以及make menuconfig类似期间或类似期间强制执行这些编译器标志,即,无论它们何时执行,它们总是传递给C编译器。
PS:请您不要问我为什么需要如此愚蠢的东西的细节。一个令人满意的解释可能需要我几个小时才能写出来,这不是我的最佳技能之一。
从Linux内核的makefile:
# Add any arch overrides and user supplied CPPFLAGS, AFLAGS and CFLAGS as the
# last assignments
KBUILD_CPPFLAGS += $(ARCH_CPPFLAGS) $(KCPPFLAGS)
KBUILD_AFLAGS += $(ARCH_AFLAGS) $(KAFLAGS)
KBUILD_CFLAGS += $(ARCH_CFLAGS) $(KCFLAGS)
Run Code Online (Sandbox Code Playgroud)
因此,为Kbuild传递附加选项将使用通常的环境/ makefile变量,但带有K前缀:
make "KCFLAGS=-pipe -Wsomething"
Run Code Online (Sandbox Code Playgroud)
Kbuild \xe2\x80\x94 Linux 内核文档提供了选项列表,
\nKCPPF标志
\n预处理时要传递的附加选项。预处理选项将在 kbuild 进行预处理的所有情况下使用,包括构建 C 文件和汇编程序文件。
\n卡夫拉格斯
\n汇编器的附加选项(用于内置和模块)。
\nAFLAGS_MODULE
\n模块的附加汇编器选项。
\nAFLAGS_KERNEL
\n内置的附加汇编器选项。
\nKCF标志
\nC 编译器的附加选项(用于内置和模块)。
\nCFLAGS_KERNEL
\n当用于编译内置编译的代码时,$(CC) 的附加选项。
\nCFLAGS_MODULE
\n用于 $(CC) 的附加模块特定选项。
\nLDFLAGS_MODULE
\n链接模块时用于 $(LD) 的附加选项。
\n主机标志
\n构建主机程序时要传递给 $(HOSTCC) 的附加标志
\n