怎么样将多个源程序编译成一个驱动?

发布于 2022-09-18 19:16:52 字数 1179 浏览 8 评论 0

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       

大侠帮忙

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

薄荷→糖丶微凉 2022-09-25 19:16:52

编译现象 :
[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根本就没加载和连接进来呀 ?? 原因何在??

伴我老 2022-09-25 19:16:52

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

清音悠歌 2022-09-25 19:16:52

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文