碰到一个问题,在开发过程中发现以前编译的模块加载失败了。
wlan: version magic '4.1.15-gfb2dbf6 SMP preempt mod_unload ARMv7 p2v8 ' should be '4.1.15-ge5de83b-dirty SMP preempt mod_unload ARMv7 p2v8 '
这里看到version magic 存在不一致的问题的,不一致的地方:
4.1.15-gfb2dbf6
4.1.15-ge5de83b
这里看到模块的符号加入了git的版本号,本来出发点是好的,但是我这种应用的场景就会导致很麻烦。
include/linux/vermagic.h
#define VERMAGIC_STRING \
UTS_RELEASE " " \
MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \
MODULE_VERMAGIC_MODULE_UNLOAD \
MODULE_VERMAGIC_MODVERSIONS \
MODULE_ARCH_VERMAGIC
分析了Makefile,UTS_RELEASE是影响版本号的主要问题。
最后我使用这样的修改方式:
修改Makefile中对UTS_RELEASE的输出:
echo \#define UTS_RELEASE \"$(KERNELVERSION)\";
最后的格式,去掉了git的版本控制信息:
4.1.15 SMP preempt mod_unload ARMv7 p2v8 ‘