我在内核里面有一个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
假设你的主程序 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
假设你的主程序 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
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
假设你的主程序 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
假设你的主程序 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
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
学习