読者です 読者をやめる 読者になる 読者になる

openとcloseハンドラを使ったサンプルコード①のエラー【デバイスドライバ】

Linuxデバイスドライバプログラミングを参考に実装をしたところエラーが発生したので記録しておく。
P.117-120の"openとcloseハンドラを使ったサンプルコード①"を打ち込み、
makeを実行したところ下記のエラーが発生した。

$ make
make -C /lib/modules/3.11.0-15-generic/build M=/home/cherno/devicedriver modules
make[1]: ディレクトリ `/usr/src/linux-headers-3.11.0-15-generic' に入ります
scripts/Makefile.build:49: *** CFLAGS was changed in "/home/cherno/devicedriver/Makefile". Fix it to use ccflags-y.  中止.
make[1]: *** [_module_/home/cherno/devicedriver] エラー 2
make[1]: ディレクトリ `/usr/src/linux-headers-3.11.0-15-generic' から出ます
make: *** [all] エラー 2

CFLAGSが変化したことでエラーが発生しているとのこと。

CFLAGS変数に「-Wall」オプションを指定する
危ういコードに対して警告を出力してくれるらしいのですが、
CFLAGSが変化したことが問題だったのでコメントアウトしたところエラーが解決された。

$ make
make -C /lib/modules/3.11.0-15-generic/build M=/home/cherno/devicedriver/devone modules
make[1]: ディレクトリ `/usr/src/linux-headers-3.11.0-15-generic' に入ります
  CC [M]  /home/cherno/devicedriver/devone/devone.o
  LD [M]  /home/cherno/devicedriver/devone/sample.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/cherno/devicedriver/devone/sample.mod.o
  LD [M]  /home/cherno/devicedriver/devone/sample.ko
make[1]: ディレクトリ `/usr/src/linux-headers-3.11.0-15-generic' から出ます
$ ls
Makefile        devone.c  modules.order  sample.mod.c  sample.o
Module.symvers  devone.o  sample.ko      sample.mod.o


CFLAGSの変化を許可する設定にできるのが最善だが、
その方法が不明だったのでコメントアウトでお茶を濁した。

どうすればCFLAGSが変化しても大丈夫になるのだろう?



Linuxデバイスドライバプログラミング

Linuxデバイスドライバプログラミング