编译内核模块遇到的问题(已解决)
本帖最后由 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,我的文件系统和内核已经编译完成可以使用,按道理说不应该出现这种情况 楼主你好,请问你编译的是哪个版本的BSP? 你使用的板子是那一块啊? 你直接make的?指定交叉工具链没? IMX6Q .SABRE SABRE事先已经编译内核了 已经执行了下面两条指令
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 楼上的编译命令式配置内核和编译内核
看你一楼的makefile文件,你的驱动文件应该没在内核目录,试试在单独编译驱动文件时也价格ARCH CROSS_COMPILE参数试一下,这样编译出来的KO绝不会是686格式 你需要将/home/a/ltib/rpm/BUILD/linux/ 里面配置好,编译一遍,再编译你这个ko {:3_45:}配置好后出现一大堆错误,而且我看引用的库文件依然是X86下面的 本帖最后由 a7458969 于 2014-8-18 19:25 编辑
找到问题的原因了,在linux内核源代码的主Makefile的说明里面找到的,ARCH和CROSS_COMPILE等设置make ARCH=arm....这样设置的,并不是在makefile里面,{:sad:}为什么这么非主流,为什么不写在文档里面?? a7458969 发表于 2014-8-18 19:16
找到问题的原因了,在linux内核源代码的主Makefile的说明里面找到的,ARCH和CROSS_COMPILE等设置make ARCH= ...
这个我们会进一步改进的,很抱歉给您带来的麻烦。
页:
[1]