分类: LINUX
2010-08-07 16:38:39
|
Makefile:
|
#KER_DIR这个目录是你本机上正在运行的内核目录,假如你下载的是其他版本的内核进行编译,有些能编译通过,可是insmod的时候就出错了。不是随便一个内核就成的。网上也有自己下载内核的方法。
KER_DIR:=你解压的内核目录,新的代码没有经过编译,无论怎么make都不行,后来我自己按照本机上的内核的.config重新编译了内核,再进行make的时候就出现了版本不同之类的错误,insmod ./hello.ko 出现:insmod: error inserting './hello.ko ': -1 Invalid module format 用dmseg查看之后,就知道是什么错误了,至今我还不知道怎么解决重新下载内核的方法。
M这是一个变量,代表的是你modules 的目录。
make之后,出现hello.ko的话 就只能说明能编译通过了而已,接下来insmod ./hello.ko,没有错误提示的话,这个程序就被执行了,运行一下dmesg,最后一行是不是可以看到hello world!字样。执行rmmod hello;再运行dmesg,最后一行又出现了Goodbye。
总结:以上就是整个流程了,期间出现了好多意想不到的错误,总之挺过来了。要学习驱动,必须要与内核结构一起学习。不然达不到效果。我学习的方法就是,一遇到了不懂的,就花心思去百度,从海量的信息中学习,总结。