linux驱动程序开发的hello模块在ubuntu8.04中的编译过程

内核编译和嵌入式产品的设计与开发
回复
abigriver
帖子: 95
注册时间: 2006-07-07 16:49

linux驱动程序开发的hello模块在ubuntu8.04中的编译过程

#1

帖子 abigriver » 2009-05-04 14:41

首先是安装编译环境,主要是kernel-header等
内核版本可以用uname -a 看:Linux hht-linux 2.6.24-24-generic #1 SMP Wed Apr 15 15:54:25 UTC 2009 i686 GNU/Linux
然后写书上的例子,保存为hello.c:
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
然后写Makefile文件:
PWD = $(shell pwd)
KERNEL_SRC = /usr/src/linux-headers-2.6.24-24-generic/
obj-m := hello.o
module-objs := hello.o
all:
$(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules
clean:
rm *.ko
rm *.o
注意内核源代码路径,要和用uname命令看到的版本一致(这里是headers)
接下来加载内核:
sudo insmod hello.ko
屏幕上没有输出,在 /var/log/syslog下,可以用 tail /var/log/syslog 查看,会有hello world
祝学习愉快
nieyong2010
帖子: 7
注册时间: 2009-05-28 23:48

Re: linux驱动程序开发的hello模块在ubuntu8.04中的编译过程

#2

帖子 nieyong2010 » 2009-05-29 0:41

首先要谢谢楼主的文章。但是,我对楼主的“帖子: 82 首先是安装编译环境,主要是kernel-header等 ”,很是困惑。
我装的是虚拟机VirtualBox 下的ubuntu 9.0.4。我没有自己去安装任何文件。
我想编译内核模块hello.c。
出现错误提示:no rule to make target -----
我找了很多网页,我的电脑里的内核树是存在的,就是说/lib/modules/2.6.28-11.generic/build 是链接到 /usr/src/kernel-linux-2.6.28-11.generic 。
我在想,是不是我没有安装楼主所说的kernel-header。
如何知道是否安装了这个呢,如果没有安装,应该如何操作呢。
望指点!!!
回复