内核驱动两个.c文件的问题!

时间:2020-11-26 06:01:37
大家好,有个问题请教大家:

我在内核里面有一个hello.c的文件,编译一个ko的模块后,可以正常挂载,可是我想在hello.c里面调用另外一个.c文件的函数,

但是好像编译可以通过,但是挂载模块的时候提示找不到调用的这个函数.

请教下大家,内核驱动调用其他c文件的函数怎么解决,这两个c文件是希望编译成一个模块,这个问题怎么解决,或者需要看什么书籍,谢谢!

6 个解决方案

#1


如果你是用makefile编译的话,就很好解决了

假设你的主程序 test.c
用到了test1.c test2.c

将代码以外部模块方式编译
make文件中
obj-m :=test.o
module-objs :=test1.o test2.o

#2


如果你是用makefile编译的话,就很好解决了 

假设你的主程序 test.c 
用到了test1.c test2.c 

将代码以外部模块方式编译 
make文件中 
obj-m :=test.o 
module-objs :=test1.o test2.o

#3


我觉得至少有两种方法:
1)像上面说的,不过有点修改:
你的文件test1.c test2.c
假设你的模块名为dummy 

obj-m  +=  dummy.0
dummy-objs := test1.o test2.o

2) 
加个.h 文件
extern some_interface();
在test1.c中实现这个some_interface
而在test2.c中 include这个.h,并调用some_interface

#4


对了在2)中 test1.c中EXPORT_SYMBOL(some_interface);

#5


谢谢大家的回复,好像这两种方法都不行,挂载内核的时候不能识别另外.c的文件。

不知道咋整了~~~~~

#6


 学习

#1


如果你是用makefile编译的话,就很好解决了

假设你的主程序 test.c
用到了test1.c test2.c

将代码以外部模块方式编译
make文件中
obj-m :=test.o
module-objs :=test1.o test2.o

#2


如果你是用makefile编译的话,就很好解决了 

假设你的主程序 test.c 
用到了test1.c test2.c 

将代码以外部模块方式编译 
make文件中 
obj-m :=test.o 
module-objs :=test1.o test2.o

#3


我觉得至少有两种方法:
1)像上面说的,不过有点修改:
你的文件test1.c test2.c
假设你的模块名为dummy 

obj-m  +=  dummy.0
dummy-objs := test1.o test2.o

2) 
加个.h 文件
extern some_interface();
在test1.c中实现这个some_interface
而在test2.c中 include这个.h,并调用some_interface

#4


对了在2)中 test1.c中EXPORT_SYMBOL(some_interface);

#5


谢谢大家的回复,好像这两种方法都不行,挂载内核的时候不能识别另外.c的文件。

不知道咋整了~~~~~

#6


 学习