当前位置: 技术问答>linux和unix
内核驱动两个.c文件的问题!
来源: 互联网 发布时间:2016-08-01
本文导语: 大家好,有个问题请教大家: 我在内核里面有一个hello.c的文件,编译一个ko的模块后,可以正常挂载,可是我想在hello.c里面调用另外一个.c文件的函数, 但是好像编译可以通过,但是挂载模块的时候提示找不到调用的这个函...
大家好,有个问题请教大家:
我在内核里面有一个hello.c的文件,编译一个ko的模块后,可以正常挂载,可是我想在hello.c里面调用另外一个.c文件的函数,
但是好像编译可以通过,但是挂载模块的时候提示找不到调用的这个函数.
请教下大家,内核驱动调用其他c文件的函数怎么解决,这两个c文件是希望编译成一个模块,这个问题怎么解决,或者需要看什么书籍,谢谢!
我在内核里面有一个hello.c的文件,编译一个ko的模块后,可以正常挂载,可是我想在hello.c里面调用另外一个.c文件的函数,
但是好像编译可以通过,但是挂载模块的时候提示找不到调用的这个函数.
请教下大家,内核驱动调用其他c文件的函数怎么解决,这两个c文件是希望编译成一个模块,这个问题怎么解决,或者需要看什么书籍,谢谢!
|
我觉得至少有两种方法:
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
|
如果你是用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