gpt4 book ai didi

c - 在 insmod 之后不同意符号 symbol_name 的版本

转载 作者:IT王子 更新时间:2023-10-29 00:42:01 26 4
gpt4 key购买 nike

我是内核编程的新手。

为了实现我的项目工作,我从 kernel.org 下载了最新的稳定内核 (v4.3) .

为了检查,我已经将一些文件从内核目录复制到我的项目目录中。对其进行了更改并向其插入了更多代码。

然后我在SLES11 Linux 内核上编译

make -C /lib/modules/$(uname -r)/build M=$PWD modules

我使用了下面的makefile

obj-m := my_module.o
my_module-objs := module_main.0 other_module1.o other_module2.o other_module3.o

编译成功。但是当我尝试使用

插入内核时
insmod my_sample.ko

显示如下

disagrees about version of symbol symbol_name

enter image description here

最佳答案

您需要针对您将要运行的相同版本的内核构建您的内核模块。因此,如果您拥有已下载的内核 4.3 源代码,则需要编译 版本的内核并在尝试加载内核之前启动并运行该版本。

那么你有两个解决方案:

  1. 为您当前运行的内核下载内核源代码(您可以在 SLES 上使用 zypper install kernel-source 或在其他发行版上使用等效命令来安装它们。)
  2. 编译 4.3 内核并将其安装到您的操作系统中。如果您需要这方面的帮助,请提出一个单独的问题(它可能属于 super 用户,不在这里)。请注意,如果内核和 glibc 紧密耦合,并且您有一个非常旧的 C 库,则可能无法运行新内核。

关于c - 在 insmod 之后不同意符号 symbol_name 的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33734133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com