デバイスドライバ-----2.Linuxカーネルモジュール-Makefile解析
677 ワード
前回Helloworldカーネルモジュールを書きましたが、ここではMakefileを解析します.
OBj-mは,後述するものをカーネルモジュールにコンパイルすることを意味する.また、obj-yコンパイルカーネルobj-nはコンパイルされません
hello.oはモジュール名
hello.o-objsはモジュール依存ファイル名
KIDはカーネルソースのパスを指定します
PWDがカレントパス
-Cオプションの役割は、現在の作業ディレクトリを指定した場所に移動することです.
「M=」オプションの役割は、ユーザーがカーネルをベースに外部モジュールをコンパイルする必要がある場合、
make modulesコマンドに「M=dir」を追加すると、指定したdirディレクトリにモジュールのソースコードが自動的に検索されます.
これをコンパイルし、KOファイルを生成します.
obj-m := hello.o
hello-objs := helloworld.o
KID := /lib/modules/`uname -r`/build
PWD := $(shell pwd)
all:
make -C $(KID) M=${PWD} modules
clean:
rm -rf *.o .cmd *.ko *.mod.c .tmp_versions
OBj-mは,後述するものをカーネルモジュールにコンパイルすることを意味する.また、obj-yコンパイルカーネルobj-nはコンパイルされません
hello.oはモジュール名
hello.o-objsはモジュール依存ファイル名
KIDはカーネルソースのパスを指定します
PWDがカレントパス
-Cオプションの役割は、現在の作業ディレクトリを指定した場所に移動することです.
「M=」オプションの役割は、ユーザーがカーネルをベースに外部モジュールをコンパイルする必要がある場合、
make modulesコマンドに「M=dir」を追加すると、指定したdirディレクトリにモジュールのソースコードが自動的に検索されます.
これをコンパイルし、KOファイルを生成します.