我想通过链接一个构建的目标文件来生成一个 .ko 文件。我读到了“kbuild”系统中提供的信息,但没有足够的细节。
请帮忙。
Kbuild 系统会根据该命令删除所有目标文件 ( *.o
) 。make clean
任何外部对象文件也将被删除,除非它们的扩展名被更改.o
为.o_shipped
保留它们。
以下示例Makefile
演示如何使用链接模块内的_shipped
目标文件:8123_bin.o_shipped
8123.ko
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
基本上,.o_shipped
文件与.o
文件相同,只是 Kbuild 系统理解它是按原样提供的二进制 blob,其源在内核/模块源目录中不可用。因此,*.o_shipped
即使源被清理,二进制 blob 也将被保留。