首页 > 解决方案 > 为什么有些函数不能在内核模块中使用?

问题描述

例如,在 中pgtable_types.h,函数原型:

extern pte_t *lookup_address(unsigned long address, unsigned int *level);

清楚地存在于头文件中。

但是,当我使用此函数编译内核模块然后 insmod.ko输出文件时,我得到一个lookup_address未找到符号的错误。

为什么是这样?

标签: clinux-kernel

解决方案


你的模块里面有MODULE_LICENSE("GPL v2")一行吗?如果不是,则假定它是专有的,并且不允许访问lookup_address标记为的 GPL 符号。


推荐阅读