デバイスドライバ-----2.Linuxカーネルモジュール-Makefile解析

677 ワード

前回Helloworldカーネルモジュールを書きましたが、ここではMakefileを解析します.
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ファイルを生成します.