【问题标题】:Loading LKM get undefined symbol error加载 LKM 得到未定义符号错误
【发布时间】:2011-08-05 10:51:51
【问题描述】:

当我尝试加载我的 Linux 内核模块时,我收到关于未定义符号的错误(显然我在制作过程中收到警告)。特别是我需要在我的模块中使用宏pgd_offset_k(在 asm/pgtable.h 中定义)。这是在pgd_offset(&init_mm, (address)) 中扩展的。未定义的符号是init_mm。我还在 /proc/kallsyms 中验证了它的存在:

$ cat /proc/kallsyms |grep -w init_mm

c07d49a0 D init_mm

有什么想法吗?

【问题讨论】:

    标签: linux-kernel


    【解决方案1】:

    init_mm 不会在 2.6.29 之后导出,因为不应使用树外代码。不能没有pgd_offset_k吗?

    【讨论】:

    • 也许有办法,但我不知道......我正在尝试做一些关于虚拟 -> 物理地址转换的实验......特别是我会转换从返回的地址物理地址中的 ioremap 调用...此转换应该给我传递给 ioremap 的地址(我希望 :))。在没有 pgd_offset_k 的情况下如何执行此转换?我想我不能使用 virt_to_phys 因为那个地址不是逻辑地址,对吧?
    猜你喜欢
    • 2021-12-13
    • 2017-05-02
    • 2010-10-03
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 2018-03-10
    相关资源
    最近更新 更多