當我寫一個Linux內核模塊,但是當我運行此命令insmod ./...ko
,內核通告有一個錯誤:未定義的符號...未定義的符號用insmod
在那之後,我搜索了很久,所有的解決方案是使用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);
請提供您已寫入的示例代碼 –
請提供[最小,完整和可驗證示例](https://stackoverflow.com/help/mcve)。另請參閱:[如何提問](https://stackoverflow.com/help/how-to-ask) –
對不起,我以前認爲我的代碼在這個問題上沒有幫助,我修改了我的問題。 – shinshiner