How to fix error: redefinition of '__kstrtab_sched_setscheduler_nocheck'

How to fix error: redefinition of '__kstrtab_sched_setscheduler_nocheck'

我正在编译 android 内核 v3.10.108。我在 defconfig 中启用了内核模块,在尝试编译时遇到了这个错误。这是 hastebin. Here is the kernel source 上的完整日志。我不是编程语言方面的专家,我需要帮助。还请指出错误发生的原因。

内核源其实是here. The error occurred because there were two commits that both added the line EXPORT(sched_setscheduler_nocheck); to the file "kernel/sched/core.c", leading to the redefinition errors. The commits are here and here.

发生错误是因为提交更改的人没有检查以确保它在启用模块时仍然正确构建。

我建议在 github 上提出一个 issue 来报告错误。

您可以通过删除 "kernel/sched/core.c" 中有问题的 EXPORT(sched_setscheduler_nocheck); 行之一或通过在本地恢复这两个 git 提交中的第二个提交来在本地解决问题。

编辑:

我从未注意到您的构建日志中有两个错误。另一个是由于两次提交应用于 "fs/fs_struct.c" here and here.

编辑 2

随后的链接器错误是由于内核 .config 中的一些东西被配置为模块(或者可能根本没有配置),这些东西被其他配置为内置的东西链接到。

配置 CONFIG_HW_RANDOM_MSM=y(而不是 =m)以有望修复 "sensors_ssc.c" 链接器问题。

配置 CONFIG_IPV6=y(不是 =m)和 CONFIG_NF_DEFRAG_IPV6=y(不是 =m)以有望修复 "ipc_router_security.c" 链接器问题。