Linuxで1つのデバイスに対して1つのドライバーを作成しました。カーネルに挿入できるように、.ko
ファイルを(gcc
を使用して)作成するにはどうすればよいですか?
このように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
が作成されます。
短い答え:できません。 .koファイルは、ドライバーソースのコンパイルされたバージョンだけではありません。カーネルビルドシステムには、インスタンスに関する追加情報(コンパイラのバージョン、モジュールの依存関係など)が含まれています。
おそらくカーネルビルドシステムを掘り下げて、必要なすべての操作を見つけることができますが、そうすべきではありません。それはほぼ間違いなく次のカーネルリリースかそれ以降のもので壊れるでしょう。付属のメイクファイルephemientを使用する必要があります。