当前位置: 代码迷 >> 驱动开发 >> linux 驱动模块编译 中的依赖有关问题!求高手解答!
  详细解决方案

linux 驱动模块编译 中的依赖有关问题!求高手解答!

热度:91   发布时间:2016-04-28 11:00:08.0
linux 驱动模块编译 中的依赖问题!!急求高手解答!!
小弟最近在编译驱动模块的过程中遇到了问题!如果驱动程序文件都放在一个文件夹里,编译模块可以顺利进行(多个模块也可以)。可是,如果我把驱动源文件放在不同的文件夹,每个文件夹中都要单独编译出几个模块时,由于某个文件夹中的代码对另一个文件夹中的代码存在依赖性,编译时会出现如下警告:
*** Warning: <function> [<module>] undefined!

我的每个文件夹中的makefile大致如下:
Makefile
obj-m := modules.o #要生成的模块名
modules-objs:= mymod.o #生成这个模块名所需要的目标文件

KDIR := /lib/modules/`uname -r`/build
PWD := $(shell pwd)

default:
make -C $(KDIR) M=$(PWD) modules

clean:
rm -rf *.o .* .cmd *.ko *.mod.c .tmp_versions

我确定在一个文件夹中,用这个makefile没有问题!而且不是EXOORT_SYMBOLE()的问题!,因为我把几个文件夹中的文件放在一个文件夹中可以正常编译!
这个依赖的问题怎么解决??需要加编译选项指定依赖的文件夹吗??求高手帮帮小弟!!

------解决方案--------------------
链接的问题吧,如果有依赖其他的模块,就用-c选项跳过链接
最后再把几个模块链接到一起
应该是这样的吧?
------解决方案--------------------

 KBUILD_EXTMOD
------解决方案--------------------
驱动中有没有MODULE_LICENSE("GPL")?
kernel根目录下有没有Module.symvers?
加载模块后,执行cat /proc/kallsyms | grep **(EXPORT_SYMBOL出来的)能不能查到驱动引出的函数?
------解决方案--------------------
你一个EXPORT_SYMBOL()导出来了,试试