3

カーネル モジュールの Makefile に関するヘルプが必要です。例でも非常に役立ちます。

現在、私のモジュール コードは複数のディレクトリの下にあります。言いましょう

<MAIN-DIR> --- l2.c 
    <SUB-DIR1> --- hello.c
    <SUB-DIR2> --- bye.c

上記のシナリオでは、どのようにメイクファイルをコーディングできますか。l2 モジュールをビルドするには、l2.o hello.o と bye.o が必要だからです。そして現在、それらは複数のディレクトリにあります。

4

1 に答える 1

6

カーネル ツリーからモジュールをビルドする場合は、次のような単純な makefile が機能するはずです。

MODULE_NAME = mymodule

SRC     := foo.c src/bar.c

# Path to target Linux Kernel
KDIR        := $(shell pwd) # <--- Fill in with path to kernel you're compiling against

$(MODULE_NAME)-objs = $(SRC:.c=.o)

obj-m       := $(MODULE_NAME).o
PWD     := $(shell pwd)

EXTRA_CFLAGS := -I$(PWD)/src -I$(PWD)/include

all:
    $(MAKE) -C $(KDIR) M=$(PWD) modules

行に見られるようにSRC :=、サブディレクトリ内のファイルを含むすべてのソース ファイルへのパスを指定するだけです。の最上位カーネル makefile がKDIRコンパイルを処理します。

カーネル ビルド システムとツリー ビルド以外の詳細については、 のカーネル ソース ドキュメントを参照してDocumentation/kbuild/modules.txtください。

于 2013-02-22T01:00:16.627 に答える