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