gpt4 book ai didi

linux -/proc/kallsyms 中标有 "T"的内核符号未导出

转载 作者:太空狗 更新时间:2023-10-29 11:25:50 25 4
gpt4 key购买 nike

符号 machine_power_off/proc/kallsyms 中用“T”标记:

$ grep -w machine_power_off /proc/kallsyms 
ffffffff8102391b T machine_power_off

但它是not exported . kallsyms 中的“T”是否足以导出符号?导出是否足以在其他模块中使用?

我使用它的模块编译时出现警告:

WARNING: "machine_power_off" [/path/to/module.ko] undefined!

在主机 (3.2.0-4-amd64) 上我可以加载这个模块,但在 VirtualBox (3.16.0-4-amd64) 上它会产生以下消息:

insmod: ERROR: could not insert module module.ko: Unknown symbol in module

为什么这个模块加载到我的主机系统中,而不是在 VirtualBox 中?

最佳答案

/proc/kallsyms中标记“T”意味着该符号是全局可见的,并且可以在其他内核代码中使用(例如,通过驱动程序、编译的内置)。

但是为了在内核模块的代码中可用,需要使用EXPORT_SYMBOL 导出符号或类似的。导出符号列表与内核中所有符号列表分开维护。

导出的符号可以在文件 /lib/modules/<kernel-version>/build/Module.symvers 中找到.

(此文件应该存在,以便针对给定内核构建内核模块)。

关于linux -/proc/kallsyms 中标有 "T"的内核符号未导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32965535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com