免费注册 查看新帖 |

Chinaunix

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

makefile老是编译不过,新手求助~~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-09 09:55 |只看该作者 |倒序浏览
这是一个简单字符设备驱动的makefile,源码拿人家的,应该没错,makefile如下:
  1. ifneq ($(KERNELRELEASE),)
  2. obj-m:=memdev.o
  3. else
  4. KERNELDIR:=/lib/modules/$(shell uname -r)/build     #内核目录

  5. PWD:=$(shell pwd)                                   #当前目录
  6. default:
  7.         make -C $(KERNELDIR) M=$(PWD) modules
  8. clean:
  9.         rm -rf *.o *mod.c *.mo
复制代码
错误信息如下:
  1. noah@ubuntu:~/Desktop$ make
  2. make -C /lib/modules/2.6.35-22-generic/build      M=/home/noah/Desktop                                    modules
  3. make[1]: Entering directory `/usr/src/linux-headers-2.6.35-22-generic'
  4.   CC [M]  /home/noah/Desktop/memdev.o
  5. /home/noah/Desktop/memdev.c:15: warning: type defaults to ‘int’ in declaration of ‘mem_major’
  6. /home/noah/Desktop/memdev.c: In function ‘mem_read’:
  7. /home/noah/Desktop/memdev.c:71: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘long unsigned int’
  8. /home/noah/Desktop/memdev.c: In function ‘mem_write’:
  9. /home/noah/Desktop/memdev.c:99: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘long unsigned int’
  10. /home/noah/Desktop/memdev.c: In function ‘memdev_init’:
  11. /home/noah/Desktop/memdev.c:174: error: implicit declaration of function ‘kmalloc’
  12. /home/noah/Desktop/memdev.c:174: warning: assignment makes pointer from integer without a cast
  13. /home/noah/Desktop/memdev.c:186: warning: assignment makes pointer from integer without a cast
  14. /home/noah/Desktop/memdev.c: In function ‘memdev_exit’:
  15. /home/noah/Desktop/memdev.c:202: error: implicit declaration of function ‘kfree’
  16. make[2]: *** [/home/noah/Desktop/memdev.o] Error 1
  17. make[1]: *** [_module_/home/noah/Desktop] Error 2
  18. make[1]: Leaving directory `/usr/src/linux-headers-2.6.35-22-generic'
  19. make: *** [default] Error 2
复制代码
希望大牛们帮我解决一下问题:
1、之所以出错是不是因为找不到kfree和kmalloc的头文件,如果是mm.h的话,我在/usr/src/linux-headers-2.6.35-22-generic/include/linux中能找到,可接下来又要干嘛?
2、能不能详详细细的解释这个makefile的所有执行过程,一直都搞不清楚到底是怎么样编译的,我也在网上搜过和根据控制台输出的信息分析过,可还是不懂,如:obj-m:=memdev.o为啥没用过?$(KERNELRELEASE)是什么变量?make -C $(KERNELDIR) M=$(PWD) modules有M=这个选项吗?我驱动的源码文件是memdev.c,为何至始至终都没出现过?等等,希望大牛解释的详细一点。

论坛徽章:
0
2 [报告]
发表于 2011-05-12 13:01 |只看该作者
回复 1# xuyuanfan77


    好像GCC要加一个系统的路径,具体不太记得了。

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
3 [报告]
发表于 2011-05-17 13:02 |只看该作者
回复 1# xuyuanfan77


    比如报错信息中提到未实现的kmalloc,kfree是否是你没有包含需要的头文件

论坛徽章:
0
4 [报告]
发表于 2011-05-17 17:31 |只看该作者
添加声明kmallo,kfree的头文件“linux/slab.h”即可。

论坛徽章:
0
5 [报告]
发表于 2011-05-19 13:03 |只看该作者
已经解决了,多谢!!!

论坛徽章:
0
6 [报告]
发表于 2011-05-19 13:05 |只看该作者
不过这里怎么结贴,不懂啊???

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:57:09C
日期:2016-10-25 16:17:59
7 [报告]
发表于 2011-05-20 11:14 |只看该作者
{:3_183:}不需要结贴
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP