カーネル2.6のモジュールコンパイル用Makefileいろいろ

1.はじめに

カーネル2.6では、ローダブルモジュールのアーキテクチャが変わるとともに、拡張子が'*.ko'となり、モジュールの作成方法もこれまでから変更になりました。

新しいモジュールアーキテクチャのカーネル2.6でローダブルモジュールをコンパイルするためのMakefileサンプルです。

2.Makefileのいろいろ

hello/Makefile - 1ソースファイル 1モジュール

hello2/Makefile - 複数ソースファイル 複数モジュール

hello3/Makefile - 複数ソースファイル 1モジュール

hello4/Makefile - 1ソースファイル(従来型オプション指定)

3.カーネル2.6用の簡単<外部モジュール>ドライバのコンパイル方法

  1. ソースを1つのディレクトリにまとめる
    # mkdir driver; cp -a hello*.[ch] driver; cd driver
  2. ソースをまとめたディレクトリ内に、Kbuildファイルを作る
    # cat > Kbuild

    (内容はこんな感じ:1ソースのとき)

    obj-m := hello_single.o
    clean-files := *.o *.ko *.mod.[co] *~

    (内容はこんな感じ:複数ソースのとき)

    obj-m := hello.o
    hello-y := hello_main.o hello_extern.o
    clean-files := *.o *.ko *.mod.[co] *~
    
  3. makeの実行
    # make -C /usr/src/linux-2.6.14.3 M=`pwd` V=1
    
  4. make cleanの実行<クリーン・アップ>
    # make -C /usr/src/linux-2.6.14.3 M=`pwd` V=1 clean
    
  5. ロード時の注意!今動いているカーネルのソースツリーでコンパイルしてなければ、ロードできない。-fオプション等は無い!

Last editted on 12/13/2005
Copyright(c) 2003, 2004, 2005 Device Drivers Limited 戻る→