简介
我有一个使用bitbake构建的Linux,该Linux的应用程序启动了一些容器。每当我启动该应用程序时,“ dmesg”都会告诉我,dm-ioctl.h的版本不匹配(4.35(内核)至4.39(应用程序)。
我正在使用64位内核(4.9)为Raspberrypi构建Linux。 如果我进入启动容器的模块的.bb配方,我会看到它抓住了头frp,另一个dm-ioctl.h所在的配方-sysroot。 该应用程序很小,可以通过cmake进行构建。
这是食谱:
DESCRIPTION = "Container management utility"
LICENSE = "CLOSED"
PACKAGES = "${PN} ${PN}-dbg"
DEPENDS = "util-linux openssl rapidjson virtual/kernel"
do_compile[depends] += "virtual/kernel:do_shared_workdir"
SRC_URI = " <files to include>"
S ="${WORKDIR}"
IMAGE_DEPLOY_DIR ?= "${@d.getVar('IMGDEPLOYDIR', False) o d.getVar('DEPLOY_DIR_IMAGE',False)}"
inherit pkgconfig cmake
sbindir = "/sbin"
bindir = "${INSTALLP}"
# Files to be packaged
FILES_${PN} = "${sbindir}/container_start"
FILES_${PN}-dbg = "${sbindir}/.debug /usr"
我已经尝试借助以下问题来修改此模块的.bb配方: How to write a BitBake driver recipe which requires kernel source header files?
但是它总是保持不变,如果我转至tmp / work / aarch64-poky-linux /我可以看到,它在食谱sysroot文件夹中的usr / include中具有错误的头文件。
问题
是否可以更改recipe-sysroot,以便它获取内核使用的相同标头,并使用它们(而不是“错误的”)编译我的模块
我如何从包含此错误头的位置获取源(它必须来自较新的内核头,但我无法弄清楚该位置位于何处)
预先感谢任何对我的问题有某种回答的人!