忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 12812 | 回复: 15

编写内核模块问题,不能生成.ko文件? [复制链接]

论坛徽章:
0
发表于 2008-11-16 19:33 |显示全部楼层
编译使不能生成.ko

环境是fc9,因为它本身不包含内核,所以我下载了一个,重新编译了

不知道是什么原因
[root@localhost project]# make -C /usr/src/linux-2.6.27.6 M=$PWD modules
make: Entering directory `/usr/src/linux-2.6.27.6'
  Building modules, stage 2.
  MODPOST 0 modules
make: Leaving directory `/usr/src/linux-2.6.27.6'

程序是按ldd3上面写的

达人指点一下,弄很长时间了

谢谢

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2008-11-16 19:58 |显示全部楼层
你编译的内核执行make modules_install了吗

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2008-11-16 19:59 |显示全部楼层
就是/lib/modules目录下生成了以你使用源码版本命名的目录了吗

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2008-11-16 20:09 |显示全部楼层

回复 #1 我是害虫 的帖子

应该是重新编译的时候除了问题,你可以找个最简单的helloworld编译一下试试

论坛徽章:
0
发表于 2008-11-16 20:38 |显示全部楼层
原帖由 Godbach 于 2008-11-16 19:59 发表
就是/lib/modules目录下生成了以你使用源码版本命名的目录了吗


make modules_install命令作了
在lib/modules下面也生成了2。6。27。6的目录

论坛徽章:
0
发表于 2008-11-16 20:41 |显示全部楼层
原帖由 dreamice 于 2008-11-16 20:09 发表
应该是重新编译的时候除了问题,你可以找个最简单的helloworld编译一下试试


试过了,没问题

我想可能是不是,gcc还是用的以前内核头文件的原因阿,或者说当初标准库编译的时候,用的旧的内核头文件

郁闷阿

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2008-11-16 21:28 |显示全部楼层
原帖由 我是害虫 于 2008-11-16 20:41 发表


试过了,没问题

我想可能是不是,gcc还是用的以前内核头文件的原因阿,或者说当初标准库编译的时候,用的旧的内核头文件

郁闷阿


如果helloworld可以编译的话,你把你的代码贴出来看看,到底是怎么回事。

论坛徽章:
0
发表于 2008-11-16 21:51 |显示全部楼层
原帖由 dreamice 于 2008-11-16 21:28 发表


如果helloworld可以编译的话,你把你的代码贴出来看看,到底是怎么回事。
  1. #include <linux/module.h>       
  2. #include <linux/kernel.h>       

  3. int init_module(void)
  4. {
  5.         printk(KERN_ALERT "Hello world \n");
  6.         return 0;
  7. }
  8. void cleanup_module(void)
  9. {
  10.         printk(KERN_ALERT "Goodbye world\n");
  11. }

  12. module_init(init_module);
  13. module_exit(cleanup_module);

复制代码


makefile文件是
obj-m +=hello.o


[root@localhost project]# make -C /usr/src/linux-2.6.27.6 M=$PWD modules        //在源程序目录里执行的
make: Entering directory `/usr/src/linux-2.6.27.6'
  Building modules, stage 2.
  MODPOST 0 modules
make: Leaving directory `/usr/src/linux-2.6.27.6'


我觉得不是程序的问题,不知道您用的是什么环境

[ 本帖最后由 我是害虫 于 2008-11-16 21:53 编辑 ]

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2008-11-16 22:11 |显示全部楼层
给你一个参考的Makefile试一下
  1. TARGET = hello
  2. KDIR = /lib/modules/$(shell uname -r)/build
  3. PWD = $(shell pwd)
  4. obj-m := $(TARGET).o
  5. default:
  6.         make -C $(KDIR) M=$(PWD) modules
  7. clean:
  8.         $(RM) *.o *.ko *.mod.c Module.symvers
复制代码

论坛徽章:
0
发表于 2008-11-16 22:30 |显示全部楼层
谢谢你
成功了
能告诉我是因为什么原因吗

我感觉把您给我的makefile展开,和我得差不多阿

make语句真难懂啊,给推荐本书把
再次谢谢你

[ 本帖最后由 我是害虫 于 2008-11-16 22:36 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP