a7458969 发表于 2014-8-18 16:23:02

编译内核模块遇到的问题(已解决)

本帖最后由 FSL_TICS_ZJJ 于 2014-9-11 13:30 编辑

编译内核模块产生的KO文件是I686格式的,下面是我的配置文件:

ARCH=arm


PWD=${shell pwd}

KERNEL_SRC=/home/a/ltib/rpm/BUILD/linux/

obj-m:=main.o

module-objs:=main.o
all:
        ${MAKE} -C ${KERNEL_SRC} M=${PWD} modules
clean:
        rm *.ko

实际结果
insmod: can't insert 'main.ko': invalid module format

modinfo后发现文件居然是X86格式下的
filename:       main.ko
author:         VRNSS
license:      GPL
vermagic:       3.0.35-2666-gbdde708 SMP preempt mod_unload modversions 686
depends:      

PS,我的文件系统和内核已经编译完成可以使用,按道理说不应该出现这种情况

FSL_TICS_Rita 发表于 2014-8-18 16:40:14

楼主你好,请问你编译的是哪个版本的BSP?

FSL_TICS_Rita 发表于 2014-8-18 16:40:45

你使用的板子是那一块啊?

浮华一生 发表于 2014-8-18 16:44:09

你直接make的?指定交叉工具链没?

a7458969 发表于 2014-8-18 16:45:41

IMX6Q .SABRE SABRE事先已经编译内核了

a7458969 发表于 2014-8-18 16:49:33

已经执行了下面两条指令
make ARCH=arm
CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-
linaro-toolchain/bin/arm-none-linux-gnueabi- imx6_defconfig

make ARCH=arm
CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-
linaro-toolchain/bin/arm-none-linux-gnueabi- uImage

k_ewell 发表于 2014-8-18 17:05:47

楼上的编译命令式配置内核和编译内核
看你一楼的makefile文件,你的驱动文件应该没在内核目录,试试在单独编译驱动文件时也价格ARCH CROSS_COMPILE参数试一下,这样编译出来的KO绝不会是686格式

maimaige 发表于 2014-8-18 17:31:28

你需要将/home/a/ltib/rpm/BUILD/linux/ 里面配置好,编译一遍,再编译你这个ko

a7458969 发表于 2014-8-18 18:00:25

{:3_45:}配置好后出现一大堆错误,而且我看引用的库文件依然是X86下面的

a7458969 发表于 2014-8-18 19:16:56

本帖最后由 a7458969 于 2014-8-18 19:25 编辑

找到问题的原因了,在linux内核源代码的主Makefile的说明里面找到的,ARCH和CROSS_COMPILE等设置make ARCH=arm....这样设置的,并不是在makefile里面,{:sad:}为什么这么非主流,为什么不写在文档里面??

FSL_TICS_Rita 发表于 2014-8-20 10:43:59

a7458969 发表于 2014-8-18 19:16
找到问题的原因了,在linux内核源代码的主Makefile的说明里面找到的,ARCH和CROSS_COMPILE等设置make ARCH= ...

这个我们会进一步改进的,很抱歉给您带来的麻烦。
页: [1]
查看完整版本: 编译内核模块遇到的问题(已解决)