本文介绍了如何使用Yocto SDK构建Linux内核模块?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
通过您的镜像配方在SDK中启用内核-devsrc(请参阅Yocto Kernel Dev Manual
TOOLCHAIN_TARGET_TASK += "kernel-devsrc"
将SDK安装到您的主机上,然后运行内核src Makefile(谢谢&@tannoy Connect";):
source path/to/sdk/environment-setup-aarch64-linux
cd -P path/to/sdk/sysroots/aarch64-linux/usr/src/kernel
# Note the -P argument: kernel is a symlink, in my case:
# path/to/sdk/sysroots/aarch64-linux/lib/modules/5.4.0-xilinx-v2020.1/build
make scripts
make prepare
编译您的树外内核模块(注意:我的Makefile使用KERNEL_SRC,因此与原始问题不同,因为它通常是通过Yocto模块编译的。bbclass):
export KERNEL_SRC=path/to/sdk/sysroots/aarch64-linux/usr/src/kernel/
make
我正在尝试使用Yocto SDK构建一个Linux内核模块。 但是,我遇到了编译错误,它报告
./include/uapi/asm-generic/int-ll64.h:12:10: fatal error: asm/bitsperlong.h: No such file or directory #include <asm/bitsperlong.h>这是我的Makefile
ARCH ?= arm CROSS_COMPILE ?= arm-poky-linux-gnueabi- KERNELDIR ?= /opt/poky/2.7.3/sysroots/cortexa9t2hf-neon-poky-linux-gnueabi/usr/src/kernel/ PWD := $(shell pwd) .PHONY: build clean build: $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNELDIR) M=$(PWD) modules clean: rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c modules.order Module.symvers # Incorporate modules into a multi-part driver my-objs := hello.o $(info Building with KERNELRELEASE = ${KERNELRELEASE}) EXTRA_CFLAGS+=-I$(PWD)/../include obj-m := hello.o在调用make之前,我正在设置源环境。
$source /opt/poky/2.7.3/environment-setup-cortexa9t2hf-neon-poky-linux-gnueabi $make 推荐答案在树外内核模块中遇到了类似的问题,这要归功于它现在正在编译的";@tannoy Connect";的注释。以下是基本步骤:
更多推荐
如何使用Yocto SDK构建Linux内核模块?
发布评论