如何build 内核源码树之外的模块

参考文档

https://www.kernel.org/doc/html/latest/kbuild/modules.html
https://linux.cn/article-11227-1.html

概要

内核源码树之外的模块称为外部模块。

外部模块的Makefile文件由两部分组成:
1:传给kbuild system的部分
2:传给GNU make程序的部分即normal makefile。

如下所示:

--> filename: Makefile
ifneq ($(KERNELRELEASE),)
# kbuild part of makefile
obj-m  := 8123.o
8123-y := 8123_if.o 8123_pci.o 8123_bin.o

else
# normal makefile
KDIR ?= /lib/modules/`uname -r`/build

default:
        $(MAKE) -C $(KDIR) M=$$PWD

# Module specific targets
genbin:
        echo "X" > 8123_bin.o_shipped

endif

把包含kbuild system部分的Mankefile文件称为 kbuild Makefile。内核子目录里包含的Makefiles基本都是kbuild Makfile。

如果kbuild Makfile文件比较大时,我们可以把此文件拆分成kbuild文件和Makefile文件。kbuild system首先查找kbuild文件,
只有在未找到时才会去查找makefile文件。也就是说makefile文件和kbuild文件同时存在时,kbuild system只会查找kbuild文件。

原文地址:https://www.cnblogs.com/bobfly1984/p/14377903.html