1

カスタムヘッダーに依存する単純なキャラクターデバイスモジュールをコンパイルしたいと思います。このようにフォルダが整理され、

+ mymod.c
| customized-header.h
| customized-header.c
| Makefile

ではmymod.c、このようにヘッダーが使用されます。

#include "customized-header.h"

Makefile で:

obj-m := mymod.o
mymod-objs := customized-header.o
KVERSION = $(shell uname -r)
PWD = $(shell pwd)
all:
    make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
    make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean

モジュールは問題なくコンパイルされ、モジュールを介してロードできますsudo insmodが、モジュールは正しく動作しません。を確認したところnm mymod.ko、多くの vars と関数が欠落しています。リンクしたら止まったように見えますcustomized_header.o。このヘッダーとその関数を削除すると、モジュールからヘッダー関数呼び出しがないと言って、目的の結果で完全にコンパイルされます。

ここで何がうまくいかなかったかわかりますか?

4

1 に答える 1

3

問題は にありMakefileます。ここにリンクがあるため、に変更しました

obj-m: mymodko.o
mymodko-obj: customized-header.o mymod.o

今では正常に動作します。したがって、問題はモジュールオブジェクトの命名でした。この場合mymodko.oとのように、異なる名前を指定する必要がありますmymod.o

于 2013-10-02T12:20:16.690 に答える