web-dev-qa-db-ja.com

Linuxで.koファイルを作成する方法

Linuxで1つのデバイスに対して1つのドライバーを作成しました。カーネルに挿入できるように、.koファイルを(gccを使用して)作成するにはどうすればよいですか?

9
Renjith G

このように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が作成されます。

9
ephemient

短い答え:できません。 .koファイルは、ドライバーソースのコンパイルされたバージョンだけではありません。カーネルビルドシステムには、インスタンスに関する追加情報(コンパイラのバージョン、モジュールの依存関係など)が含まれています。

おそらくカーネルビルドシステムを掘り下げて、必要なすべての操作を見つけることができますが、そうすべきではありません。それはほぼ間違いなく次のカーネルリリースかそれ以降のもので壊れるでしょう。付属のメイクファイルephemientを使用する必要があります。

2
Kristof Provost