主题 : 编译驱动时提示implicit declaration of function 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 69373
精华: 0
发帖: 47
金钱: 235 两
威望: 47 点
综合积分: 94 分
注册时间: 2012-05-05
最后登录: 2017-09-13
楼主  发表于: 2012-06-11 20:38

 编译驱动时提示implicit declaration of function

我用的内核是linux-2.6.38
Makefile文件如下:
1 ARCH = arm
2 CROSS_COMPILE = arm-linux-
3
4 obj-m := dht11.o
5 KDIR := /opt/FriendlyARM/tiny6410/linux/linux-2.6.38
6 PWD := $(shell pwd)
7 modules:
8 $(MAKE) -C $(KDIR) M=$(PWD) modules
9 clean:
10 $(MAKE) -C $(KDIR) M=$(PWD) clean

包含的头文件有:
1 #include <linux/miscdevice.h>
2 #include <linux/delay.h>
3 #include <asm/irq.h>
4 #include <mach/regs-gpio.h>
5 #include <mach/hardware.h>
6 #include <linux/kernel.h>
7 #include <linux/module.h>
8 #include <linux/init.h>
9 #include <linux/mm.h>
10 #include <linux/fs.h>
11 #include <linux/types.h>
12 #include <linux/delay.h>
13 #include <linux/moduleparam.h>
14 #include <linux/slab.h>
15 #include <linux/errno.h>
16 #include <linux/ioctl.h>
17 #include <linux/cdev.h>
18 #include <linux/string.h>
19 #include <linux/list.h>
20 #include <linux/pci.h>
21 #include <linux/gpio.h>
22 #include <asm/uaccess.h>
23 #include <asm/atomic.h>
24 #include <asm/unistd.h>


编译的时候出错提示:
make -C /opt/FriendlyARM/tiny6410/linux/linux-2.6.38 M=/opt/FriendlyARM/tiny6410/linux/mydrv/drive modules
make[1]: Entering directory `/opt/FriendlyARM/tiny6410/linux/linux-2.6.38'
CC [M] /opt/FriendlyARM/tiny6410/linux/mydrv/drive/dht11.o
/opt/FriendlyARM/tiny6410/linux/mydrv/drive/dht11.c: In function 'DHT11_read_byte':
/opt/FriendlyARM/tiny6410/linux/mydrv/drive/dht11.c:39:3: error: implicit declaration of function 's3c2410_gpio_getpin'
/opt/FriendlyARM/tiny6410/linux/mydrv/drive/dht11.c:39:3: error: implicit declaration of function 'S3C2410_GPF'
/opt/FriendlyARM/tiny6410/linux/mydrv/drive/dht11.c: In function 'DHT11_read':
/opt/FriendlyARM/tiny6410/linux/mydrv/drive/dht11.c:78:2: error: implicit declaration of function 's3c2410_gpio_cfgpin'
/opt/FriendlyARM/tiny6410/linux/mydrv/drive/dht11.c:78:41: error: 'S3C2410_GPIO_OUTPUT' undeclared (first use in this function)
/opt/FriendlyARM/tiny6410/linux/mydrv/drive/dht11.c:78:41: note: each undeclared identifier is reported only once for each function it appears in
/opt/FriendlyARM/tiny6410/linux/mydrv/drive/dht11.c:79:2: error: implicit declaration of function 's3c2410_gpio_setpin'
/opt/FriendlyARM/tiny6410/linux/mydrv/drive/dht11.c:84:41: error: 'S3C2410_GPIO_INPUT' undeclared (first use in this function)
/opt/FriendlyARM/tiny6410/linux/mydrv/drive/dht11.c: In function 'DHT11_init_module':
/opt/FriendlyARM/tiny6410/linux/mydrv/drive/dht11.c:164:41: error: 'S3C2410_GPIO_OUTPUT' undeclared (first use in this function)
make[2]: *** [/opt/FriendlyARM/tiny6410/linux/mydrv/drive/dht11.o] Error 1
make[1]: *** [_module_/opt/FriendlyARM/tiny6410/linux/mydrv/drive] Error 2

请问下怎么解决这问题呢?
级别: 新手上路
UID: 69373
精华: 0
发帖: 47
金钱: 235 两
威望: 47 点
综合积分: 94 分
注册时间: 2012-05-05
最后登录: 2017-09-13
1楼  发表于: 2012-06-11 20:57
是不是内核版本的问题啊,我用的linux-2.6.38,编译别人的驱动(linux-2.6.32)提示一样的问题。
那么2.6.38内核的's3c2410_gpio_getpin' 在哪?
级别: 新手上路
UID: 69373
精华: 0
发帖: 47
金钱: 235 两
威望: 47 点
综合积分: 94 分
注册时间: 2012-05-05
最后登录: 2017-09-13
2楼  发表于: 2012-06-11 21:23
我刚用linux-2.6.28.6版本的还是不行,头文件要怎么改才行呢
级别: 新手上路
UID: 69373
精华: 0
发帖: 47
金钱: 235 两
威望: 47 点
综合积分: 94 分
注册时间: 2012-05-05
最后登录: 2017-09-13
3楼  发表于: 2012-06-12 08:45
有人会吗?求解答啊
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
4楼  发表于: 2012-06-12 11:07
这些函数针对s3c24xx系列的, 所以
如果要把这个驱动移植到s3c6410,你需要进行移植,比如s3c2410_gpio_cfgpin改成s3c_gpio_cfgpin
级别: 新手上路
UID: 69373
精华: 0
发帖: 47
金钱: 235 两
威望: 47 点
综合积分: 94 分
注册时间: 2012-05-05
最后登录: 2017-09-13
5楼  发表于: 2012-06-12 14:28
但是我看内核代码的时候是看到s3c2410_gpio_cfgpin函数的。
级别: 新手上路
UID: 69373
精华: 0
发帖: 47
金钱: 235 两
威望: 47 点
综合积分: 94 分
注册时间: 2012-05-05
最后登录: 2017-09-13
6楼  发表于: 2012-06-12 14:31
改成s3c_gpio_cfgpin还是一样。是编译的时候出现同样的问题,