insmod: error inserting 'hello.ko': -1 Invalid module format

insmod: error inserting 'hello.ko': -1 Invalid module format
生成的ko,不能正常加载,提示以上错误
是因为内核模块生成的环境与运行的环境不一致,用linux-2.6.27内核源代码生成的模块,可能就不能在linux-2.6.32.2内核的linux环境下加载,需要在linux-2.6.27内核的linux环境下加载。
最多见的就是在ARM-LINUX开发中,开发板上运行的linux版本与PC机上linux版本不一致。

为了使编译通过,在为开发板加载驱动的Makefile中,必须引用开发板上的linux内核版本,并且加上处理器架构和嵌入式编译器

如果指定的嵌入式源代码的Makefile已经指定好了架构和交叉编译器,则make 后面可以不指定

交叉编译使用的Makefile(必须指定嵌入式源代码路径,交叉编译器,处理器架构)

ifneq ($(KERNELRELEASE),)
        obj-m := hello.o
else
#KDIR := /lib/modules/`uname -r`/build
KDIR := /opt/EmbedSky/linux-2.6.30.4                   

all:
        make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
clean:
        rm -f *.ko *.o *.mod.o *.mod.c *.symvers Mo* mo*
endif
             
                                                                
主机PClinux运行的Makefile (使用系统内部源代码路径,系统默认的GCC编译器)

ifneq ($(KERNELRELEASE),)
        obj-m := book.o
else
KDIR := /lib/modules/`uname -r`/build
#KDIR := /opt/EmbedSky/linux-2.6.30.4
all:
        make -C $(KDIR) M=$(PWD) modules 
clean:
        rm -f *.ko *.o *.mod.o *.mod.c *.symvers Mo* mo*
endif


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值