【问题标题】:Including specific header files in yocto build在 yocto build 中包含特定的头文件
【发布时间】:2015-12-25 11:50:00
【问题描述】:

我正在尝试在开发包中找到的 yocto 构建中包含特定的头文件。包是 boost 和 alsa。

我已将 bitbake 配方文件包含到我的图像配方中,该配方是核心配方 (console-trdx-image.bb) 作为 IMAGE_INSTALL += 的 bbappend,并对图像进行 bitbaked。

当我查看我的构建工作目录时,在 alsa 和 boost 的包中,所有文件都驻留在我希望它们所在的位置 - 以 usr/include/alsa 为例。

我很难将构建/安装的包材料放入映像本身的 rootfs。

我对 alsa 的 .bbappend 如下:

    do_install_append() {

    # Create alsa dirs
    install -d ${D}/${includedir}/alsa
    install -d ${D}/${includedir}/alsa/sound
    # Install headers
    install -m 0755 ${S}/include/*.h ${D}/${includedir}/alsa
    install -m 0755 ${S}/include/sound/*.h ${D}/${includedir}/alsa/sound

}

# Include these files in the install on the target
FILES_${PN} += "${includedir}/alsa/*.h"

当我在创建的映像的 rootfs 中查看 /usr/include 时,那里什么都没有。不是香肠。

有人知道为什么吗?

谢谢!

【问题讨论】:

  • 据我所见,这些文件由原始配方打包:默认情况下,标头最终位于 ${PN}-dev 包中。你确定你新安装的头文件不在 -dev 包中吗?
  • 当我查看 alsa (alsa-lib/1.0.27.2-r0) 的构建区域时,它们似乎存在于多个位置,但从未进入映像 rootfs。当我查看 packages-split/alsa-lib-dev/usr/include 时,我只得到一个目录 'sys' 但如果我查看 alsa-lib/1.0.27.2-r0/package/ 我得到 usr/include 目录我预计。在 alsa-lib/1.0.27.2-r0 下的图像目录中,我还得到了我期望的目录,即包括、bin、lib 等....但由于某种原因,这最终不会出现在最终图像 rootfs 上。

标签: boost alsa yocto bitbake


【解决方案1】:

首先,你不需要我们的bbappend,只需要打包头文件。

如果您只是 bitbake alsa-lib,您将获得(除其他外): $ ls tmp-glibc/work/i586-oe-linux/alsa-lib/1.0.29-r0/packages-split/alsa-lib-dev/usr/include/ alsa sys 在子目录 alsa 中,您将找到所有已安装的 alsa 库头文件。

但是,这些头文件通常不会安装到您的 rootfs 上,因为那毫无意义(大多数时候)。如果您希望能够直接在您的目标上针对 alsa-lib 进行开发,您应该将所有alsa-lib-dev 都添加到您的图像中。最好通过添加 IMAGE_INSTALL += "alsa-lib-dev" 在您的图像配方中。您还可以添加 IMAGE_INSTALL_append = " alsa-lib-dev" 到 local.conf。注意_append 的使用和字符串中的前导空格。

执行上述任一操作都会将所有头文件添加到您的 rootfs。

【讨论】:

  • 感谢安德斯,它帮助我达到了我需要的程度,但我最后用 IMAGE_INSTALL += "alsa-dev" 修复了它,因为 alsa-lib-dev 包有大量我不需要并且似乎没有我需要的 alsa 的辅助文件(!)
猜你喜欢
  • 2018-11-25
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多