我的makefile是:
引用:obj-m := char_driver.o
KERNELDIR := /usr/src/linux-2.6.8/
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$PWD modules
出差回来,拿到FC2上编译一把,还是不行,错误:
没有规则可以创建目标WD/Makefile
[_module_WD]错误
把PWD := $(shell pwd去掉,$PWD换成`pwd`,编译成功,安装失败:
error inserting 'char_driver.ko':-1 Invalid module format
哈哈,离成功近了一步.?弃ubuntu算了.不过看来2.6内核在编译与当前内核版本不同的驱动不用点手段是不行的了,只好老老实实去下载2.6.5的内核解压,把内核树再编译一把,现编译,居然找不到目标.怀疑是makefile的问题,将KERNELDIR换成/lib/modules/$('uname -r')/build/.终于成功啦....
dmesg或者tail /var/log/messages可以看到最下面显示的hello world信息了.爽!
本来想自已编译一个2.6.8的内核,在它上面写for 2.6.8的驱动的,不过编译完后,在mkinitrd时失败:
No module sata_via found for kernel 2.6.8,aborting.
看样子应该是缺个sata的模块.于是重新查看内核配置,发现device driver下的ATA/ATAPI/MFM/RLL support -> support for SATA选项,可是无法选择作为模块编译,只能Y或N.还有一个是SCSI device support -> SCSI low-level drivers -> Serial ATA support.同样地不能作为模块编译.这下我就不明白了,我的台式机是IDE硬盘,不需要initrd应该也可以启动啊,试了一下,启动到某个步骤就kernel panic了,教育网上公网不方便,过两天再想法子..
[ 本帖最后由 wise-man 于 2007-2-1 11:03 编辑 ]
huidalangvip 于 2010-11-17 14:45:45发表:
路过。。。
shao13081352 于 2010-11-17 13:03:41发表:
恭喜!