在makefile中设置了buildroot编译出来的交叉编译链,但是用这个编译链编译驱动会报错
KERNEL_DIR=/home/test/lc/buildroot/output/build/linux-5.4.99/ #内核源码路径
ARCH=arm64
CROSS_COMPILE=/home/test/lc/buildroot/output/host/bin/arm-buildroot-linux-gnueabi
export ARCH CROSS_COMPILE
obj-m := inwiegand.o
all:
$(MAKE) -C $(KERNEL_DIR) M=$(CURDIR) modules
.PHONE:clean
clean:
$(MAKE) -C $(KERNEL_DIR) M=$(CURDIR) clean
报错信息如下
test@lc-es-vm:~/lc/drivers/wiegend_driverw-master/driver$ make
make -C /home/test/lc/buildroot/output/build/linux-5.4.99/ M=/home/test/lc/drivers/wiegend_driverw-master/driver modules
make[1]: Entering directory `/home/test/lc/buildroot/output/build/linux-5.4.99'
CC [M] /home/test/lc/drivers/wiegend_driverw-master/driver/inwiegand.o
arm-buildroot-linux-gnueabi-gcc.br_real: 错误:unrecognized command line option ‘-mgeneral-regs-only’
make[3]: *** [/home/test/lc/drivers/wiegend_driverw-master/driver/inwiegand.o] 错误 1
make[2]: *** [/home/test/lc/drivers/wiegend_driverw-master/driver] 错误 2
make[1]: *** [sub-make] 错误 2
make[1]: Leaving directory `/home/test/lc/buildroot/output/build/linux-5.4.99'
make: *** [all] 错误 2
如果不是用这个编译链,应该用哪个呢,我buildroot里没有设置使用外部工具链。
奇怪的是我把这个驱动放到内核目录里,buildroot就可以正常编译通过。
问题已经解决,是我的makefile里cpu架构没改,还是64位!
最近编辑记录 wwddgod (2024-05-10 10:16:07)
离线
哈哈哈,这个ARCH设置的有点奇怪,目前玩的多半是32位的,特别是全志,万年A7
离线