gpt4 book ai didi

c - 使用 insmod 时 undefined symbol

转载 作者:太空宇宙 更新时间:2023-11-04 04:23:12 24 4
gpt4 key购买 nike

我写了一个 linux 内核模块,但是当我运行这个命令 insmod ./...ko 时,内核发布了一个错误:Undefined symbol ...

后来找了半天,所有的解决方案都是用EXPORT_SYMBOL(),于是写在内核代码中,重新编译内核。有趣的事情发生了,内核说 exports duplicate symbol ... (owned by kernel)。好像不止一次导出了这个符号,但是如果是这样,为什么我以前不能使用它?

这是我模块中的相关代码:

extern struct task_struct *find_task_by_vpid(pid_t nr);
target_tsk = pid == -1 ? current : find_task_by_vpid(pid);

然后我将内核文件 linux/sched.h 更改为这种格式:

extern struct task_struct *find_task_by_vpid(pid_t nr);
EXPORT_SYMBOL_GPL(find_task_by_vpid);

最佳答案

符号导出 ( EXPORT_SYMBOL ) 应该在 文件 ( .c ) 中执行,而不是在 文件 ( .h ) 中执行。

这是因为导出符号是(一些其他)符号的定义,而头文件不适合此类事情。

关于c - 使用 insmod 时 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44256928/

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