我在 Linux 中为一台设备编写了一个驱动程序。如何创建(使用gcc
).ko
文件以便将其插入内核?
答案1
创建一个Makefile
像这样的。
ifneq ($(KERNELRELEASE),)
obj-m := mymodule.o
else
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
install:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules_install
%:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) $@
endif
假设您的模块的源代码位于mymodule.c
,运行make
将创建mymodule.ko
.
答案2
简短的回答:你不能。 .ko 文件不仅仅是驱动程序源的编译版本。内核构建系统包括一些额外的信息,例如(编译器版本、模块依赖项……)。
您可能可以深入挖掘内核构建系统来查找所有必需的操作,但您不应该这样做。它几乎肯定会随着下一个内核版本或之后的版本而崩溃。您应该使用提供的 makefile ehemient。