相关文章推荐
腼腆的手链  ·  Java 技术篇 - ...·  2 年前    · 
爱看球的斑马  ·  Index of ...·  2 年前    · 
苦恼的荔枝  ·  thingsboard编译错误 ...·  2 年前    · 

最近在调试wlan驱动模块时出现如下错误:

[ 17.940000] qca_ol: Unknown symbol __udivdi3 (err 0)

insmod: can't insert '/lib/modules/qca_ol.ko': unknown symbol in module, or unknown parameter
这个错误导致qca_ol.ko无法挂载从而导致一系列错误。编译时也会提示如下警告:
WARNING: "__udivdi3" [/home/master-trunk/project/oem/modules/wlan-10.4-spf50/os/linux/../../qca_ol/qca_ol.ko] undefined!

查阅资料后发现原因是因为嵌入式32位系统中的除法操作(如:a/b),当a为64位变量时不能直接使用除法符号‘/’,否则就会出现上述错误。如果必须做64位除法应该使用函数do_div(a,b), 注意次函数的返回值为余数,最终的结果保存在a变量中

针对do_div()的这种特性我们可以封装一个自己的除法函数:

static u32
Divided_64(__u64 a, __u64 b)
	__u64 result = a;
	if(b == 0) {
		return 0;
	do_div(result, b);
	return (u32)result;
                    最近在调试wlan驱动模块时出现如下错误:[ 17.940000] qca_ol: Unknown symbol __udivdi3 (err 0)insmod: can't insert '/lib/modules/qca_ol.ko': unknown symbol in module, or unknown parameter        这个错误导致qca_ol.ko无法
				
报错如下: 通过参考博客:http://blog.chinaunix.net/uid-20717979-id-3351360.html 后发现是数据类型问题,但是作者提供的思路没有解决,于是去lib/printfmt.c文件中做类型强转换后运行成功 printnum(putch, putdat, num / base, base, width - 1, padc); printnum(putch, putdat, (uint32_t)num / (uint32_t)base, bas
(转载注:这篇文章对于我有很大的帮助,只看了一半就把目前手上的内核线程的问题解决了,而这个问题之前并没有找到合适的解决方法) 原文地址:http://yijunzhu.diandian.com/?tag=%E5%86%85%E6%A0%B8 编译Linux下面的代码,经常会遇到这种错误: undefined reference to `__udivdi3' 【解决过程】 ...
Android 编译错误undefined symbol分析与解决方案 最近在Android Q上写一个bin文件时遇到编译报错的问题,具体报错如下: ld.lld: error: undefined symbol: android::RefBase::decStrong(void const*) const >>> referenced by StrongPointer.h:182 (system/core/libutils/include/utilsPointer.h:182) git error:error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function. 25669