android - 如何修复错误: redefinition of '__kstrtab_sched_setscheduler_nocheck'

标签 android c linux-kernel kernel-module

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

最佳答案

内核源码实际上是here 。发生错误的原因是有两次提交都将行 EXPORT(sched_setscheduler_nocheck); 添加到文件“kernel/sched/core.c”中,从而导致重新定义错误。提交是 herehere .

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

我建议筹集issue在 github 上报告错误。

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

编辑:

我从来没有注意到你的构建日志中有两个错误。另一个是由于两次提交应用于“fs/fs_struct.c”herehere .

编辑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”链接器问题。

关于android - 如何修复错误: redefinition of '__kstrtab_sched_setscheduler_nocheck' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47697009/

相关文章:

linux - 如何在不修改和预编译 linux 内核的情况下替换静态内核函数

android - 是否可以在动态壁纸中使用 Android 的 View 动画包(补间/帧)?

android - 权限拒绝 : receiving Intent { act=com. google.android.c2dm.intent.REGISTRATION

c - 如何处理多个定时器信号

信用卡号码验证

c - 删除尾随空白

linux - 如何在内核模块中访问/dev/shm 下由用户空间进程创建的 tmpfs 文件?

linux - Debian 内核头文件 3.15

android - 如何在 targetSDKVersion >= 26 的 Android 8.0 上检测插入的耳机

android - 从 expo 连接时的 Windows 防火墙问题