首页 > 解决方案 > 编译 bitbake 配方时错误的标题

问题描述

介绍

我得到了一个用 bitbake 构建的 Linux,它有一个启动一些容器的应用程序。每次我启动这个应用程序时,“dmesg”都会告诉我,dm-ioctl.h(4.35(内核)到 4.39(应用程序)的版本不匹配。

我使用 64 位内核(4.9)为 Raspberrypi 构建 Linux。如果我进入启动容器的模块的 .bb 配方,我会看到它抓取了头文件 frp,即另一个 dm-ioctl.h 所在的 recipe-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 配方: 如何编写需要内核源头文件的 BitBake 驱动程序配方?

但它总是保持不变,如果我去 tmp/work/aarch64-poky-linux/ 我可以看到,它在 recipe-sysroot 文件夹中的 usr/include 中有错误的标题。

问题

  1. 是否可以更改 recipe-sysroot 以便它获取我的内核使用的相同头文件并用它们编译我的模块,而不是“错误的”

  2. 我如何从包含此错误标头的位置获取源代码(它必须来自较新的内核标头,但我无法弄清楚这个标头的位置)

提前感谢任何对我的问题有某种答案的人!

标签: linuxkernelbitbake

解决方案


推荐阅读