【发布时间】:2019-04-30 17:01:41
【问题描述】:
我正在尝试构建我的自定义内核模块。它编译成功,但是在插入模块时它给了我错误
insmod: init_module 'helloworld.ko' failed (Exec format error)
并且dmesg日志显示:
version magic '3.10.0+ mod_unload ARMv7 p2v8 ' should be '3.10.0 SMP preempt mod_unload ARMv7 p2v8 '
如何在版本魔法中添加“SMP”和“抢占”?
【问题讨论】:
-
"我正在尝试构建我的自定义内核模块" -- 那么您可能没有正确构建它(即您的主机构建环境引用的内核与用于在目标上启动的那个)。您的模块应该自动继承该内核的“神奇版本”。还是您忽略了提供您正在做的事情的全部细节? IOW 你可能需要构建一个启用了 CONFIG_SMP 和 CONFIG_PREEMPT 的内核,尽管你仍然需要处理版本号中的
+。 -
你可以强制版本魔法几乎是你想要的任何东西,但是对于比 helloworld 更复杂的模块,“SMP”和“抢占”差异可能是不明智的。
-
您能否提供有关如何构建模块的更多详细信息,例如您正在输入的命令以及您正在使用的任何 Makefile 或 Kbuild 文件的副本?
标签: linux-kernel kernel-module