加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux内核编译错误:未定义引用`__udivdi3’和`__umoddi3′

发布时间:2020-12-13 23:22:34 所属栏目:Linux 来源:网络整理
导读:这是我得到的错误: http://pastebin.com/VadUW6fy drivers/built-in.o: In function `gem_rxmac_reset':clkdev.c:(.text+0x212238): undefined reference to `__bad_udelay'drivers/built-in.o: In function `divide.part.4':clkdev.c:(.text.unlikely+0x72
这是我得到的错误:
http://pastebin.com/VadUW6fy

drivers/built-in.o: In function `gem_rxmac_reset':
clkdev.c:(.text+0x212238): undefined reference to `__bad_udelay'
drivers/built-in.o: In function `divide.part.4':
clkdev.c:(.text.unlikely+0x7214): undefined reference to `__udivdi3'
clkdev.c:(.text.unlikely+0x7244): undefined reference to `__umoddi3'

我用Google搜索并找到了这个补丁:https://lkml.org/lkml/2008/4/7/82

--- a/include/linux/time.h
+++ b/include/linux/time.h
@@ -174,6 +174,10 @@ static inline void timespec_add_ns(struct timespec *a,u64 ns)
 {
        ns += a->tv_nsec;
        while(unlikely(ns >= NSEC_PER_SEC)) {
+               /* The following asm() prevents the compiler from
+                * optimising this loop into a modulo operation.  */
+               asm("" : "+r"(ns));
+
                ns -= NSEC_PER_SEC;
                a->tv_sec++;
        }

但未能申请(可能是由于新版本的文件).

patching file linux/time.h
     Hunk #1 FAILED at 174.
     1 out of 1 hunk FAILED -- saving rejects to file linux/time.h.rej

令人惊讶的是,文件time.h.rej不存在!

解决方法

我应该仔细阅读一下.该补丁适用于timespec_add_ns(),并且您有gem_rxmac_reset()和divide.part.4函数失败.可能与您找到的补丁无关 – 相反,可能标准的64位div / mod函数在您的目标平台上没有实现.

你有Sun GEM或Apple GMAC网卡吗?如果没有,您可能只是禁用该驱动程序并摆脱第一条错误消息.

对于第二种,您可能需要在clkdev.c文件中实现类似的asm技巧 – 当我浏览我的副本以进行重复的减法操作时,我没有发现一个 – 但也许你可以简单地窃取一个新的clkdev.c还是clkdev.h来解决这个问题? (这是一个很长的镜头,git log drivers / clk / clkdev.c中只有一个条目.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读