在乌班图上写了个最简单的hello驱动,交叉编译完后,上aarch64架构的开发板发现没办法安装。
在5.4.18-85-generic内核上,使用5.4.18的源码编译驱动程序,在modprobe hello时,出现了错误:
modprobe: ERROR: could not insert 'hello': Exec format error
使用dmesg发现以下log:
hello: version magic '5.4.18 SMP mod_unload aarch64' should be '5.4.18-85-generic SMP mod_unload modversions aarch64'
解决方案:
将内核源码中的顶层Makefile文件修改为当前运行内核的版本号即可
VERSION = 5
PATCHLEVEL = 4
SUBLEVEL = 18
EXTRAVERSION = -85-generic
重新生成.config文件,编译module并modprobe即可