当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : linux驱动程序开发的hello模块在ubuntu8.04中的编译过程
帖子发表于 : 2009-05-04 14:41 

注册: 2006-07-07 16:49
帖子: 95
送出感谢: 0 次
接收感谢: 0 次
首先是安装编译环境,主要是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
祝学习愉快


页首
 用户资料  
 
2 楼 
 文章标题 : Re: linux驱动程序开发的hello模块在ubuntu8.04中的编译过程
帖子发表于 : 2009-05-29 0:41 

注册: 2009-05-28 23:48
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
首先要谢谢楼主的文章。但是,我对楼主的“帖子: 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。
如何知道是否安装了这个呢,如果没有安装,应该如何操作呢。
望指点!!!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译