加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux-kernel – 交叉编译内核模块:模块格式无效

发布时间:2020-12-13 23:02:37 所属栏目:Linux 来源:网络整理
导读:我正在尝试使用规范交叉编译helloworld内核模块: 主机:intel x86 32位,linux-3.0.0 目标:ARM机器(Parrot AR.Drone),linux-2.6.27.47 我正在使用makefile: PWD := $(shell pwd)obj-m := test.oall: $(MAKE) -C /path/to/kernel M=$(PWD) CROSS_COMPILE=ar
我正在尝试使用规范交叉编译helloworld内核模块:

>主机:intel x86 32位,linux-3.0.0
>目标:ARM机器(Parrot AR.Drone),linux-2.6.27.47

我正在使用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内核的fork.使用此内核,编译成功.尝试插入模块时,它会给出错误:

invalid module format

遗憾的是,这很少说.

解决方法

感谢Eugene使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读