社区
Linux_Kernel
帖子详情
问个在模块中调用内核函数的未定义问题
wf521yezi
2010-10-20 08:46:36
我在一个模块的open()函数中调用了dev_activate()这个函数,在编译的时候,直接显示dev_activate这个函数未定义,有没有高手晓得这个是啥原因的哈
PS:函数的声明所在的头文件/net/sch_generic.h已经包含在里面了,这个函数所在的定义的地方是在/net/sched/sch_generic.c
...全文
421
8
打赏
收藏
问个在模块中调用内核函数的未定义问题
我在一个模块的open()函数中调用了dev_activate()这个函数,在编译的时候,直接显示dev_activate这个函数未定义,有没有高手晓得这个是啥原因的哈 PS:函数的声明所在的头文件/net/sch_generic.h已经包含在里面了,这个函数所在的定义的地方是在/net/sched/sch_generic.c
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
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 内核
模块
函数
调用
在编写linux内核
模块
的时候,有时候我们需要
调用
一只内核
模块
里面的函数,然而如果是在不同目录下面编译生成的内核
模块
,此时A
模块
去
调用
B
模块
的函数时候会出现函数
未定义
,无法
调用
的情况。那么以前我是在同一个目录下面,先后写两个makefile,然后编译生成两个不同的内核
模块
,这种方式可以正常实现A
模块
调用
B
模块
里面的函数,不过非常麻烦。本博文将会针对这种情况提出一种可以同时生成多个内核
模块
。
linux
调用
ko的函数,linux 内核
模块
函数
调用
在编写linux内核
模块
的时候,有时候我们需要
调用
一只内核
模块
里面的函数,然而如果是在不同目录下面编译生成的内核
模块
,此时A
模块
去
调用
B
模块
的函数时候会出现函数
未定义
,无法
调用
的情况。那么以前我是在同一个目录下面,先后写两个makefile,然后编译生成两个不同的内核
模块
,这种方式可以正常实现A
模块
调用
B
模块
里面的函数,不过非常麻烦。本博文将会针对这种情况提出一种可以同时生成多个内核
模块
,不要再次...
驱动编译进内核没
问题
,编译成
模块
报函数
未定义
错误
报错形式如下所示:其
中
test为函数名 WARNING: "test"[*******.ko] undefined! 解决办法为:将函数test导出符号到内核符号表。 可以使用如下两种方式 EXPORT_SYMBOL(符号名);//函数名 = 符号名 EXPORT_SYMBOL_GPL(符号名); 导出的符号将可以被其他
模块
使用,使用前声明一下即可。EXPORT_SYMBOL_GPL...
编译linux内核出现
未定义
的引用,编译Linux内核
模块
时
未定义
的函数
我正在尝试使用Linux softirq.有一个简单的程序使用linux / interrupt.h
中
定义的linux系统
调用
://// Created by kivi on 24.09.16.//#include #include #include #include #define SHARED_IRQ 17static int irq = SHARED_IRQ, my_dev_id, irq_...
Linux内核
模块
导出后无法
调用
问题
解决(
模块
间函数
调用
通讯)
Linux
模块
间通讯方法非常的多,最便捷的方法莫过于函数符号导出,然后直接
调用
。然而在linux2.6.26以后的内核
中
模块
的符号导出经常会出现
问题
,一个
模块
中
的导出符号不能被另外一个
模块
进行
调用
。这个使得处理有依赖关系的
模块
非常的头疼。 1. 符号导出函数EXPORT_SYMB
Linux_Kernel
4,465
社区成员
17,462
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章