作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试在 Raspberry Pi 上使用 C 和 Bash 制作一个 hello_world 内核模块。
我成功地使用 make 命令生成了一个 hello_world.ko
文件。
但是,当我尝试使用 insmod hello_world.ko
命令时,出现以下错误:
Error: could not insert module hello_world.ko: Invalid module format
我尝试按照 Raspberry Pi forum 中描述的步骤进行操作,但我运气不佳。
我认为这可能是因为我的内核和 Linux 头文件之间的版本不匹配。这些 header 在此过程中扮演什么角色,我如何获得与我的内核匹配的版本?
最佳答案
头文件定义了模块和内核之间的接口(interface),以及用户空间和内核之间的接口(interface)。如果您的内核版本和头文件不匹配,您的模块将无法如您预期的那样工作。您当前的头文件通常在您的存储库中可用。您可以通过以下方式检查当前正在运行的内核:
uname -r
然后检查您的 repo 是否有 linux header :
sudo apt-cache search linux-headers
并安装它们。
关于c - 使用 insmod "Could not insert module hello_world.ko: Invalid module format"时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244481/
我是一名优秀的程序员,十分优秀!