0

我想通过链接一个构建的目标文件来生成一个 .ko 文件。我读到了“kbuild”系统中提供的信息,但没有足够的细节。

请帮忙。

4

1 回答 1

0

Kbuild 系统会根据该命令删除所有目标文件 ( *.o) 。make clean任何外部对象文件也将被删除,除非它们的扩展名被更改.o.o_shipped保留它们。

以下示例Makefile演示如何使用链接模块内的_shipped目标文件:8123_bin.o_shipped8123.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 也将被保留。

更多细节可以在Documentation/kbuild/modules.txt 中找到

于 2013-08-24T06:49:18.263 回答