问个在模块中调用内核函数的未定义问题

wf521yezi 2010-10-20 08:46:36
我在一个模块的open()函数中调用了dev_activate()这个函数,在编译的时候,直接显示dev_activate这个函数未定义,有没有高手晓得这个是啥原因的哈
PS:函数的声明所在的头文件/net/sch_generic.h已经包含在里面了,这个函数所在的定义的地方是在/net/sched/sch_generic.c
...全文
324 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wenyubo 2011-11-09
楼主知道怎么解决了吗
回复
wf521yezi 2010-12-23
[Quote=引用 6 楼 eclipse_2 的回复:]
从符号表中找出函数符号
然后分析一下 得出你的地址地址
然后调用这个地址
不需要重新编译内核
[/Quote]
这个具体是咋个做的呢,就是使用未导出函数的具体步骤哈,比如说调用哪些函数的哈
回复
小魔菇 2010-11-09
从符号表中找出函数符号
然后分析一下 得出你的地址地址
然后调用这个地址
不需要重新编译内核
回复
汗晕倒 2010-11-09
重新编译内核把~~
回复
井朝天 2010-11-08
一般内核没有导出的函数是用不了的。除非加上EXPORT_SYMBOL并重新编译内核,要么就静态编译你的驱动模块。

还有一种方法,把这个函数实现拿出来放到你的代码里,但是如果这个函数是内核中关于一些全局,静态变量处理的函数。你拿出来也没用。
回复
wf521yezi 2010-10-31
EXPORT_SYMBOL_GPL没法采用这种导出方法,这个需要重新编译内核才行,有没有可以不需要编译内核就能使用这个函数的方法?
回复
wf521yezi 2010-10-31
问题是/net/sched/sch_generic.c已经是编译好了的,linux里不存在sch_generic.c源文件的哈
回复
pottichu 2010-10-21
在 /net/sched/sch_generic.c 中加入

EXPORT_SYMBOL_GPL(dev_activate);
回复
相关推荐
发帖
Linux_Kernel
创建于2007-08-27

4148

社区成员

Linux/Unix社区 内核源代码研究区
申请成为版主
帖子事件
创建了帖子
2010-10-20 08:46
社区公告
暂无公告