我使用的是一个嵌入式linux系统,它也没有内核源代码或头文件。此外,我不能简单地使用另一个内核。
但是,我获得了另一个内核版本的内核源代码,并且可以为该内核编译该模块。但是我不能在我的目标系统上加载这个模块,因为dmesg说“版本魔术”。
那么,我能以某种方式使模块引用另一个内核吗?关于内核版本的信息是从哪里读取的?
我的目标系统的内核版本是'3.18.11-tegra',内核源代码是3.18.19。
发布于 2016-06-22 18:42:29
当然,您的计划只有在该模块在两个内核版本上都能原封不动地工作时才能成功,这种情况经常发生;然后您可以在3.18.19内核源代码的顶级Makefile中植入SUBLEVEL = 11。
发布于 2016-06-23 04:50:45
前段时间在不同的系统上做了同样的事情,你需要使用他们的配置下载并编译3.18.11内核。转到https://www.kernel.org/pub/linux/kernel/并下载3.18.11将内核解压到/usr/src/linux-3.18.11,cd到其中,然后复制当前配置
make mrproper zcat /proc/config.gz >.config make oldconfig make
编译内核后,需要在/usr/src下创建2个符号链接
ln -s linux-3.18.11 linux-3.18.11-tegra ln -s linux-3.18.11 linux
现在您应该能够使用以下命令编译您的模块:
make -C /lib/modules/$(uname -r)/build M=$(pwd) module
https://stackoverflow.com/questions/37328553
复制相似问题