我正在使用嵌入式Linux系统,我也没有内核源代码或头文件。此外,我不能简单地使用另一个内核。
但是我得到了另一个内核版本的内核源代码,并且可以为该内核编译该模块。但是我无法在我的目标系统上加载该模块,因为dmesg说的是版本魔术'
那么,我可以以某种方式使模块引用另一个内核吗?读取内核版本的信息在哪里?
我的目标系统有内核版本' 3.18.11-tegra',内核源代码是3.18.19 ..
答案 0 :(得分:0)
当然,只有当该模块与两个内核版本一起运行时,您的计划才能成功,而这通常就是这种情况;那么你可以将SUBLEVEL = 11
植入3.18.19内核源代码的顶级Makefile
。
答案 1 :(得分:0)
不久前在不同的系统上做了同样的事情 您需要使用他们的配置下载并编译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