免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1841 | 回复: 7
打印 上一主题 下一主题

菜鸟,请高手指教关于hello world 的问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-28 14:57 |只看该作者 |倒序浏览
刚刚看了本关于驱动程序编写的书,里面有个hello.c,就试着编了下

代码如下:

#define MODULE
#include<linux/module.h>

int init_module(void)
{
  printk("<1>Hello world\n");
  return 0;
}

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

[root]#gcc -c hello.c

[root]#ls
hello.c hello.o

[root]#/sbin/insmod hello.o
No mudule found in object
insmod:error inserting 'hello.o':-1 Invalid module format

请问哪有问题呀?

论坛徽章:
0
2 [报告]
发表于 2006-11-28 15:20 |只看该作者
Makefile:
obj-m := test.o

然后
make -C /usr/src/linux SUBDIRS=$PWD modules

论坛徽章:
0
3 [报告]
发表于 2006-11-28 15:22 |只看该作者
/usr/src/linux 是源码目录,里边要有.config
可能还需要编译过模块

论坛徽章:
0
4 [报告]
发表于 2006-11-28 15:32 |只看该作者
rh的系统需要装上kernel-<号码>.rpm和kernel-devel-<号码>.rpm两个包。
另外请说明你用的系统版本

论坛徽章:
0
5 [报告]
发表于 2006-11-28 15:38 |只看该作者
内核版本是多少?
2.4的话,需要用module_init()和module_exit()来申明,并且编译选项要有:-D__KERNEL__ 才行。

论坛徽章:
0
6 [报告]
发表于 2006-11-28 16:07 |只看该作者
我用的是redhat fedora 3 在/usr/src/里只有redhat目录

论坛徽章:
0
7 [报告]
发表于 2006-11-28 16:11 |只看该作者

Re:2楼

Makefile:
obj-m := test.o

这个Makefile文件中是不是应该用
obj-m := hello.o 呀?
还有就是文件就写这一行代码就好了?

论坛徽章:
0
8 [报告]
发表于 2006-11-28 16:30 |只看该作者
原帖由 sunhson 于 2006-11-28 16:07 发表
我用的是redhat fedora 3 在/usr/src/里只有redhat目录


那么建议你做两部:

1,找安装光盘,装上kernel-devel包
2,编写一个Makefile,如下:

  1. ifneq ($(KERNELRELEASE),)
  2.         obj-m := hello.o
  3. else

  4. KERNELSRC := /lib/modules/`uname -r`/build

  5. modules:
  6.         make -C $(KERNELSRC) M=$(shell pwd) modules V=1
  7. clean:
  8.         rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c
  9.         rm -rf .tmp_versions
  10. endif
复制代码

放在hello.c同样的目录下, 并在这个目录里make
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP