免费注册 查看新帖 |

Chinaunix

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

请教,驱动静态编译进内核出错! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-05 10:32 |只看该作者 |倒序浏览
1.在/usr/src/linux2.4.26-vsrl-hzh/drivers/char 目录下编写源程序 globalvar.c 。其中源文件中包涵这样一个函数:
Int globalvar_init(void)
{ 。。。。。。。。。。。。。
     Register_chrdev(MAJOR_NR,DEVICE_NAME,&globalvar_fops)//对驱动程序进行注册
。。。。。。。。。。。。。
}

2.修改/usr/src/linux2.4.26-vsrl-hzh/drivers/char/Makefile 在适当的位置添加一行:
   obj_$(CONFIG_GLOBALVAR) += globalvar.o

3.修改 /usr/src/linux2.4.26-vsrl-hzh/drivers/char/Config.in, 在适当的位置添加一行:
bool ‘globalvar devices’ CONFIG_GLOBALVAR //在make menuconfig 时可以进行配置。

4.修改 GLOBALVAR/mem.c 在适当的位置添加:
#ifdef CONFIG_GLOBALVAR
      extern int globalvar_init(void);
#endif
在chr_dev_init()函数中添加:
#ifdef CONFIG_GLOBALVAR
      globalvar_init();//在内核启动的时候对GPIO驱动程序进行注册
#endif

5.在make menuconfig 中选中 globalvar device,进行编译,编译内核过程中出错!

错误如下:
vers/input/inputdrv.o drivers/at91/at91drv.o \
        net/network.o \
        arch/arm/nwfpe/math-emu.o arch/arm/lib/lib.a /usr/src/linux-2.4.26-vrs1-hzh/lib/lib.a \
        --end-group \
        -o vmlinux
drivers/char/char.o: In function `chr_dev_init':
drivers/char/char.o(.text.init+0xb4): undefined reference to `globalvar_init'

make: *** [vmlinux] Error 1
[root@localhost linux-2.4.26-vrs1-hzh]#

请高手指点,非常感谢!我的内核是linux-2.4.26-vrs1-hzh,是移植到ARM上的内核。。。。
谢谢,呵呵

论坛徽章:
0
2 [报告]
发表于 2007-09-05 17:29 |只看该作者
Int确认是大写吗?

论坛徽章:
0
3 [报告]
发表于 2007-09-05 20:46 |只看该作者
在你的globalvar.c文件里把函数导入到内核符号表
EXPORT_SYMBOL(globalvar_init)
然后再其他地方extern int globalvar_init(void);

论坛徽章:
0
4 [报告]
发表于 2007-09-06 17:08 |只看该作者
试一下,先谢谢两位高手的指点了

第一位,那是我的笔误,呵呵
第二位,我来调试一下看看,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP