Jen*_*man 4 arm cross-compiling kernel-module linux-kernel
我试图交叉编译具有规范的helloworld内核模块:
我正在使用makefile:
PWD := $(shell pwd)
obj-m := test.o
all:
$(MAKE) -C /path/to/kernel M=$(PWD) CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm modules
Run Code Online (Sandbox Code Playgroud)
arm-none-linux-gnueabi-arm工具链的前缀在哪里。
作为内核,我尝试使用来自git://github.com/CyanogenMod/cm-kernel.git内核的克隆。这是一个2.6内核派生。使用该内核,编译成功。尝试插入模块时,出现错误:
invalid module format
Run Code Online (Sandbox Code Playgroud)
可悲的是,这说得很少。
由于使用了Eugene的提示dmesg,我发现了错误:
version magic '2.6.37.6 mod_unload modversions ARMv5 ' should be '2.6.27.47-parrot preempt mod_unload ARMv5 '
Run Code Online (Sandbox Code Playgroud)
结论:编译内核模块时,不仅需要匹配版本,而且还需要一些配置参数。我的问题通过使用正确的版本并编辑配置得以解决。
如果您不想重新配置所有内容,则可以通过快速(丑陋)的修复方法进行编辑 include/generated/autoconf.h