linux-kernel – 使用populate_sdk包含内核头文件
如何在Yocto中将
Linux内核头文件包含在SDK包中?
我在嵌入式项目中使用Yocto 1.8(fido),并希望进行树外核心模块开发.目前,我可以通过在运行make时将$KERNEL_PATH指向poky / build / tmp / work-shared /< machine> / kernel-source /目录来构建我的内核模块(除了bitbake).但是,我不想长期这样做,因为其他人需要轻松构建模块而无需安装和构建bitbake的完整图像. 我可以使用bitbake myimage -c populate_sdk生成一个SDK.但是,这不包括内核头文件(我所见过的是sysroots /< mach> /usr/include / linux).如何使内核头文件包含在SDK包中?另外,我不希望内核头文件显示为目标图像的一部分. [编辑] EXTRA_IMAGE_FEATURES_append = " eclipse-debug debug-tweaks" TOOLCHAIN_HOST_TASK_append = " nativesdk-cmake" IMAGE_INSTALL = "packagegroup-core-boot ${CORE_IMAGE_EXTRA_INSTALL} util-linux kernel-modules netbase busybox base-passwd base-files sysvinit initscripts bash gdbserver strace sysfsutils dtc gawk ethtool grep sed wget iptables oprofile net-tools dropbear rsync stress-ng rt-tests i2c-tools" inherit core-image 我正在使用的内核是meta-altera层中的linux-altera-ltsi-rt. 解决方法
从fido版本开始,内核构建的处理已经改变.在以前的版本中,您通常可以跳到下面的用法示例.
在fido或任何1.8中,如果你想在SDK中使用内核src和构建系统,你应该添加 TOOLCHAIN_TARGET_TASK_append = " kernel-devsrc" 到您的图像食谱.这将确保将新的kernel-devsrc软件包安装到您的工具链中. 以下过程只是为了确保完全理解工作流程的其余部分(即使它不是原始问题的严格部分). 用法示例 让我们假设一个模块Makefile如下: obj-m += hello-1.o all: make -C $(KERNEL_SRC) M=$(PWD) modules clean: make -C $(KERNEL_SRC) M=$(PWD) clean “Linux内核模块编程指南”中的示例(请注意,实际命令需要有缩进的制表符). 然后,你必须在Makefile或make调用中将KERNEL_SRC定义为sysroots /< mach> /usr/src / kernel /. (使用像KERNEL_SRC这样的变量将确保您的模块配方在使用bitbake构建时自动选择正确的位置). 要手动构建内核模块: >获取SDK的environment- *文件. 如果需要使用sudo运行,请确保在sudo环境中获取环境文件:sudo bash -c“source< sdk-install-path> / environment-setup-< mach>&& make silentoldconfig脚本” 现在应该允许您构建模块. 如果您没有ysroots /< mach> /usr/src / kernel /下的内核源代码,我们将不得不研究它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |