我试图交叉编译具有规范的helloworld内核模块:
linux-3.0.0
我用的是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其中arm-none-linux-gnueabi-是arm工具链的前缀。
作为内核,我尝试使用来自git://github.com/CyanogenMod/cm-kernel.git的一个克隆作为内核。这是一个2.6内核叉。使用这个内核,编译是成功的。当尝试插入模块时,它会给出错误:
invalid module format可悲的是,这说明不了什么。
发布于 2012-02-20 14:21:12
由于尤金暗示要使用dmesg,我发现了错误:
version magic '2.6.37.6 mod_unload modversions ARMv5 ' should be '2.6.27.47-parrot preempt mod_unload ARMv5 '结论:在编译内核模块时,不仅需要版本匹配,而且还需要一些配置参数.通过使用正确的版本和编辑配置解决了我的问题。
如果您不想重新配置所有的东西,那么一个快速的(丑陋的)修复就是编辑include/generated/autoconf.h
发布于 2016-03-23 07:59:55
我丑陋的修复是修改脚本文件“script /setlocalversion”
170 if test "${LOCALVERSION+set}" != "set"; then
171 scm=$(scm_version --short)
172 # res="$res${scm:++}"
173 res="${res}"
174 fi大家好..。我确实找到了简单的解决办法。
只是改善了环境
export LOCALVERSION=就这样
https://stackoverflow.com/questions/9341701
复制相似问题