免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5382 | 回复: 3
打印 上一主题 下一主题

Ubuntu 9.04 编译模块 "__udivdi3" undefined! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-25 15:07 |只看该作者 |倒序浏览
内核编译通过了,但是编译模块的末尾提示没有"__udivdi3"
insmod提示 insmod:error inserting 'a.ko' : -1 Unknown symbol in module.
看网上的说是改内核中的Makefile加上一个选项,可是我这个是模块呀?
哪位大侠给些思路呀?没有头绪

论坛徽章:
0
2 [报告]
发表于 2009-09-25 15:23 |只看该作者
你自己的模块内使用了内核里没有加载的函数。哪个模块里有__udivdi3,必须先加载后才能加载你自己的模块。

论坛徽章:
0
3 [报告]
发表于 2009-09-25 15:54 |只看该作者
我的文件里面没有调用他呀?
如何看哪个模块的具体名字是什么?就是lsmod的结果中的名字,对应的相应文件?

论坛徽章:
0
4 [报告]
发表于 2009-09-25 16:17 |只看该作者
__udivdi3 __umoddi3 - 64 bit division in linux

If you've encountered an error message like this

Unknown symbol __udivdi3
Unknown symbol __umoddi3
Unresolved symbol __udivdi3
Unresolved symbol __umoddi3

you most likely want to make a 64 bit division, which is not supported by default in linux kernel space.


To solve this problem, you need to use the do_div macro available in asm/div64.h:

#include <asm/div64.h>
unsigned long long x, y, result;
unsigned long mod;
mod = do_div(x, y);
result = x;

If you want to calculate x / y with do_div(x, y), the result of the division is in x, the remainder is returned from the do_div function.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP