当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 14 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 关于在Ubuntu的环境下,编译内核模块Hello World!问题!!
帖子发表于 : 2008-04-26 22:13 

注册: 2008-04-26 14:34
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
#define MODULE
#include <linux/module.h>

int init_module()
{
printk("<1>Hello World!\n0");
return 0;
}

void cleanup_module()
{
printk("<1> Goodbye!\n");
}



fangquan@fangquan-desktop:~/Desktop/modul$ gcc -c helloworld.c
helloworld.c:2:26: 错误: linux/module.h:No such file or directory
fangquan@fangquan-desktop:~/Desktop/modul$


请问这问题怎么解决,谢谢


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-04-27 10:13 

注册: 2006-11-02 12:12
帖子: 17
送出感谢: 0 次
接收感谢: 0 次
先看论坛,再提问


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-04-27 10:13 

注册: 2006-11-02 12:12
帖子: 17
送出感谢: 0 次
接收感谢: 0 次
http://forum.ubuntu.org.cn/viewtopic.php?t=109762


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-04-27 22:10 

注册: 2008-04-26 14:34
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
我看过了,下面就是按照他的方法来编译的,出现了一下情况:
fangquan@fangquan-desktop:~/driver$ make
make -C /lib/modules/2.6.20.3-ubuntu1/build M=/home/fangquan/driver modules
make[1]: Entering directory `/usr/src/linux-source-2.6.20'
scripts/Makefile.build:17: /home/fangquan/driver/Makefile: No such file or directory
make[2]: *** 没有规则可以创建目标“/home/fangquan/driver/Makefile”。 停止。
make[1]: *** [_module_/home/fangquan/driver] 错误 2
make[1]: Leaving directory `/usr/src/linux-source-2.6.20'
make: *** [modules] 错误 2
fangquan@fangquan-desktop:~/driver$ ls
hello.c hello.c~ makefile makefile~
fangquan@fangquan-desktop:~/driver$

我想问一下,这是什么原因造成的。


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-04-27 22:12 

注册: 2008-04-26 14:34
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
在lib下有以下文件
fangquan@fangquan-desktop:/lib/modules$ ls
2.6.20-15-generic 2.6.20-16-generic 2.6.20.3-ubuntu1
fangquan@fangquan-desktop:/lib/modules$ cd 2.6.20.3-ubuntu1
fangquan@fangquan-desktop:/lib/modules/2.6.20.3-ubuntu1$ ls
build modules.dep modules.ofmap modules.usbmap
kernel modules.ieee1394map modules.pcimap source
modules.alias modules.inputmap modules.seriomap
modules.ccwmap modules.isapnpmap modules.symbols
fangquan@fangquan-desktop:/lib/modules/2.6.20.3-ubuntu1$


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-04-27 22:14 

注册: 2008-04-26 14:34
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
在lib下有以下文件
fangquan@fangquan-desktop:/lib/modules$ ls
2.6.20-15-generic 2.6.20-16-generic 2.6.20.3-ubuntu1
fangquan@fangquan-desktop:/lib/modules$ cd 2.6.20.3-ubuntu1
fangquan@fangquan-desktop:/lib/modules/2.6.20.3-ubuntu1$ ls
build modules.dep modules.ofmap modules.usbmap
kernel modules.ieee1394map modules.pcimap source
modules.alias modules.inputmap modules.seriomap
modules.ccwmap modules.isapnpmap modules.symbols
fangquan@fangquan-desktop:/lib/modules/2.6.20.3-ubuntu1$

不知道是否因缺乏安装包造成的


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-04-27 22:16 

注册: 2008-04-26 14:34
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
其中 2.6.20.3-ubuntu1 编译内核后生成的


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-05-01 17:34 

注册: 2006-09-25 18:51
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
是不是你的Makefile有问题呢?


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-07-01 18:33 

注册: 2008-07-01 15:30
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
我也遇到這個問題,可能是因為2.4和2.6的kernel module編譯方式不一樣
你可以試試看
//hello.c
#include<linux/init.h>
#include<linux/module.h>
#include<linux/moduleparam.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "hello,world\n");
return 0;
}
static int hello_exit(void)
{
printk(KERN_ALERT "goodbye,world\n");
return 0;
}
module_init(hello_init);
module_exit(hello_exit);


//Makefile
ifeq ($(KERNELRELEASE),)
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD :=$(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
.PHONY:modules modules_install clean
else
obj-m:=hello.o
endif


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-07-01 18:35 

注册: 2008-07-01 15:30
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
記得這裡開頭要用TAB往後退


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2008-07-01 18:41 

注册: 2008-07-01 15:30
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
參考這裡
http://tw.myblog.yahoo.com/a2267/articl ... 6&next=266
你的code好像是2.4的


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-07-01 19:20 

注册: 2008-07-01 15:30
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
你只要加上Makefile就可以
obj-m:=hello.o
把hello.o改成你的helloworld.o
如後不會顯示出來
請在你可以cat /var/log/syslog |grep hello
查看日志,如果有hello,world就说明成功了。
http://forum.ubuntu.org.cn/viewtopic.php?t=126764


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 关于在Ubuntu的环境下,编译内核模块Hello World!问题!!
帖子发表于 : 2008-09-26 2:33 

注册: 2008-04-01 0:10
帖子: 92
送出感谢: 0 次
接收感谢: 0 次
gcc -o helloworld.c 吧


页首
 用户资料  
 
14 楼 
 文章标题 : Re: 关于在Ubuntu的环境下,编译内核模块Hello World!问题!!
帖子发表于 : 2011-08-10 14:30 

注册: 2011-08-10 14:00
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
我写的源文件hello.c
#include"include/linux/module.h"
#include"include/linux/configfs.h"
#include"linux/init.h"
#include"include/linux/kernel.h"
static int hello_init(void)
{
printk(KERN_ALERT "Hello.world\n ");
return 0;
}
static int hello_exit(void)
{
pritk(KERN_ALERT "Goodbye.crrunt world\n");
return 0;
}
module_init(hello_init);
module_exit(hello_exit);
写的Makefile是:
obj -m +=hello.o
编译用的命令是:make -C '/usr/src/linux-headers-2.6.31-14-generic/' M=$PWD modules
多出来了这么几个文件:
Module.markers modules modules.order Module.symver
编译提示是:
make: Entering directory `/usr/src/linux-headers-2.6.31-14-generic'
Building modules, stage 2.
MODPOST 0 modules
make: Leaving directory `/usr/src/linux-headers-2.6.31-14-generic'
就是没有hello.ko
我是个新手,请问各位前辈,这该怎么解决???


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

当前时区为 UTC + 8 小时


在线用户

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


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

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

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