免费注册 查看新帖 |

Chinaunix

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

怎么样将多个源程序编译成一个驱动? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-03 10:35 |只看该作者 |倒序浏览
1.obj-m:= smart_card.o 定义为新名smart_card.o , 说找不到smart_card
#ifneq ($(KERNELRELEASE),)
        obj-m:= smart_card.o
        module-objs := ncn6001.o smart_driver.o
#else
        KDIR = /opt/kernel/utu-linux_for_s3c2440_dm9000_V1.5.8
        PWD:=$(shell pwd)
default:
        $(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
        rm -rf *.o *.ko
#endif       

2.定义为两个文件中的一个 , 又不编译连接ncn6001文件 ,说引用那未定义的名称(就是在ncn6001定义的函数 ,在头文件中已经声明那呀)
#ifneq ($(KERNELRELEASE),)
        obj-m:= smart_driver.o
        module-objs := ncn6001.o smart_driver.o
#else
        KDIR = /opt/kernel/utu-linux_for_s3c2440_dm9000_V1.5.8
        PWD:=$(shell pwd)
default:
        $(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
        rm -rf *.o *.ko
#endif       


大侠帮忙

论坛徽章:
0
2 [报告]
发表于 2009-03-03 10:56 |只看该作者

编译情况2与加载的情况如下:

编译现象 :
[root@localhost drv]# make
make -C /opt/kernel/utu-linux_for_s3c2440_dm9000_V1.5.8 M=/usr/xp_nfs/smart_driver/drv modules
make[1]: Entering directory `/opt/kernel/utu-linux_for_s3c2440_dm9000_V1.5.8'
  CC [M]  /usr/xp_nfs/smart_driver/drv/smart_driver.o
/usr/xp_nfs/smart_driver/drv/smart_driver.c: In function `T1_Receiv_Send':
/usr/xp_nfs/smart_driver/drv/smart_driver.c:1081: warning: 'ret' might be used uninitialized in this function
  Building modules, stage 2.
  MODPOST
*** Warning: "Spi_release" [/usr/xp_nfs/smart_driver/drv/smart_driver.ko] undefined!
*** Warning: "Smart_ColdRst" [/usr/xp_nfs/smart_driver/drv/smart_driver.ko] undefined!
*** Warning: "Ncn6001_Init" [/usr/xp_nfs/smart_driver/drv/smart_driver.ko] undefined!
*** Warning: "ncn6001_dat_init" [/usr/xp_nfs/smart_driver/drv/smart_driver.ko] undefined!
*** Warning: "Spi_Init" [/usr/xp_nfs/smart_driver/drv/smart_driver.ko] undefined!
  CC      /usr/xp_nfs/smart_driver/drv/smart_driver.mod.o
  LD [M]  /usr/xp_nfs/smart_driver/drv/smart_driver.ko
make[1]: Leaving directory `/opt/kernel/utu-linux_for_s3c2440_dm9000_V1.5.8'
You have new mail in /var/spool/mail/root

加载现象:
[root@utu-linux drv]# insmod smart_driver.ko
Using smart_driver.ko
smart_driver: Unknown symbol Spi_Init
smart_driver: Unknown symbol Ncn6001_Init
smart_driver: Unknown symbol ncn6001_dat_init
smart_driver: Unknown symbol Spi_release
smart_driver: Unknown symbol Smart_ColdRst

这样看来ncn6001根本就没加载和连接进来呀 ?? 原因何在??

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
3 [报告]
发表于 2009-03-03 12:00 |只看该作者

回复 #1 pcl001 的帖子

你看看LDD3就知道了,上面写得挺详细的。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
4 [报告]
发表于 2009-03-03 12:01 |只看该作者

回复 #2 pcl001 的帖子

从你这个现象来看,主要是这些symbol在内核符号表里面没有找到。
有几种可能:
1、头文件没有包含进去或者是函数没有实现;
2、你需要的其他模块导出的函数,但这个模块没有加载进内核。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP