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を使用する必要があります。