我正在内核树之外使用 LKM,我想为我的模块使用一些编译选项,例如 MYLKM_CONFIG_{something}。我知道这可以使用 C 预处理 (#define // #ifdef // #endif) 来完成。但我想知道是否可以为此目的使用 Kbuild(Kconfig 文件或相关文件)?..
还有一个问题。是否可以make menuconfig
仅针对我的模块,而不针对整个内核树?
谢谢。
我正在内核树之外使用 LKM,我想为我的模块使用一些编译选项,例如 MYLKM_CONFIG_{something}。我知道这可以使用 C 预处理 (#define // #ifdef // #endif) 来完成。但我想知道是否可以为此目的使用 Kbuild(Kconfig 文件或相关文件)?..
还有一个问题。是否可以make menuconfig
仅针对我的模块,而不针对整个内核树?
谢谢。
如果您使用推荐的方法在树之外构建驱动程序(参见 ldd 第 2 章),该命令应如下所示:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
该命令的作用有两个:
$(KERNELDIR)
找到主内核 Makefile的位置$(PWD)
,它会尝试构建模块目标因此,如果您将 .config 从 复制$(KERNELDIR)
到$(PWD)
,则它应该由 Makefile 解析,并且您应该拥有所有可用的 CONFIG_LKM_* #defines(虽然未经测试,但听起来合乎逻辑)。
对于这个make menconfig
问题,关于上面的解释,如果你在你的$(PWD)
目录中添加一些 KConfig 文件,它可能会起作用。