ubuntu驱动开发环境 我使用的版本是ubuntu8.04, 内核树已经建立。在 /usr/src 目录下有对应的使用的版本目录:linux-headers-2.6.24-19 linux-headers-2.6.24-19-generic ,如果没有,需要到网上去下载。//hello.c#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>MODULE_LICENSE("GPL");static int init_routine(void){ printk("module init /n"); return 0;}void cleanup_routine(void){ printk("Cleanup module /n");}module_init(init_routine);module_exit(cleanup_routine);下面是makfile obj-m := hello.oKERNELDIR ?= /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd)all: $(MAKE) -C $(KERNELDIR) M=$(PWD)clean: rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions保存文件后,编译通过。如果出现sysu@sysu-desktop:~/driver$ makeMakefile:10: *** 遗漏分隔符 (您的意思是用 TAB 代替 8 个空格?)。 停止。或root@sysu-desktop:~/driver# makemake: 没有什么可以做的为 `all'。的错误,都是因为Makefile的格式不对, $(MAKE)和 rm -rf *.o *前面的空格都是一个TAB键补全的。root@sysu-desktop:~/driver# makemake -C /lib/modules/2.6.24-19-generic/build M=/home/sysu/drivermake[1]: Entering directory `/usr/src/linux-headers-2.6.24-19-generic'LD /home/sysu/driver/built-in.oCC [M] /home/sysu/driver/hello.oBuilding modules, stage 2.MODPOST 1 modulesCC /home/sysu/driver/hello.mod.oLD [M] /home/sysu/driver/hello.komake[1]: Leaving directory `/usr/src/linux-headers-2.6.24-19-generic'好了,编译成功。测试一下:加载模块root@sysu-desktop:~/driver# insmod hello.ko查看模块root@sysu-desktop:~/driver# lsmodModule Size Used byhello 2432 0 i915 32512 2 drm 82452 3 i915rfcomm 41744 2 删除模块root@sysu-desktop:~/driver# rmmod hello查看输出root@sysu-desktop:~/driver# tail dmesg[ 173.995486] NETDEV WATCHDOG: eth0: transmit timed out[ 173.995506] eth0: Transmit timed out, status 00000000, resetting...[ 173.995510] Rx ring dd7e4000: 80000000 80000000 80000000 80000000 80000000 80000000 80000000 80000000 80000000 80000000 80000000 80000000[ 173.995527] Tx ring dd7eb000: 80000000 80000000 80000000 0000 80000000 80000000[ 2722.659875] module init [ 2833.604333] Cleanup module 到此第一个驱动就结束拉。