【问题标题】:Yocto generated nativesdk-cmake SDK is incompleteYocto 生成的 nativesdk-cmake SDK 不完整
【发布时间】:2018-06-22 02:01:13
【问题描述】:

在过去的几天里,我一直在尝试使用 Yocto Project 生成一个可行的 CMake SDK。我正在尝试根据下面给出的图像文件生成 SDK:

#To build SDK, use bitbake meta-toolchain

DESCRIPTION = "Embeddev-LXDE image."

LICENSE="CLOSED"

IMAGE_INSTALL = "packagegroup-core-boot \
    packagegroup-core-x11 \
    packagegroup-lxde-base \
    kernel-modules \
"

IMAGE_INSTALL_append = " nano git cmake qtbase qtchooser dbus packagegroup-core-ssh-openssh xterm"

#Framebuffer driver for tft
IMAGE_INSTALL_append = " xf86-video-fbdev"

IMAGE_INSTALL_append = " apt dpkg sudo tzdata glibc-utils localedef networkmanager pointercal xinit xkeyboard-config base-passwd liberation-fonts pkgconfig"

IMAGE_INSTALL_append = " wiringpi"

#Maybe consider connman instead of networkmanager
#vc-graphics is problematic with userland..

inherit populate_sdk

## SDK stuff, to build sdk use bitbake rpi-embeddev-lxde-image -c populate_sdk
# Add all static packages:  SDKIMAGE_FEATURES += "staticdev-pkgs"
SDKIMAGE_FEATURES += "staticdev-pkgs"
SDKIMAGE_FEATURES += "dev-pkgs"
TOOLCHAIN_TARGET_TASK_append = " wiringpi-dev"
TOOLCHAIN_HOST_TASK_append = " nativesdk-cmake"
##
inherit distro_features_check
REQUIRED_DISTRO_FEATURES = "x11"

IMAGE_LINGUAS ?= " "

LICENSE = "MIT"

export IMAGE_BASENAME = "rpi-embeddev-lxde-image"

inherit core-image

ENABLE_SPI_BUS = "1"
ENABLE_I2C = "1"

# qtwebengine qtwebkit ...

do_image_prepend() {

}

我使用bitbake rpi-embeddev-lxde-image -c populate_sdk 创建我的 SDK。

我想描述一下确切的问题。问题是 nativesdk-cmake 没有正确安装在 SDK 中。 Cmake 3.10.2 配方给出:

do_install_append_class-nativesdk() {
    mkdir -p ${D}${datadir}/cmake
    install -m 644 ${WORKDIR}/OEToolchainConfig.cmake ${D}${datadir}/cmake/

    mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
    install -m 644 ${WORKDIR}/environment.d-cmake.sh ${D}${SDKPATHNATIVE}/environment-setup.d/cmake.sh
}

FILES_${PN}_append_class-nativesdk = " ${SDKPATHNATIVE}"

FILES_${PN} += "${datadir}/cmake-${CMAKE_MAJOR_VERSION}"
FILES_${PN}-doc += "${docdir}/cmake-${CMAKE_MAJOR_VERSION}"

BBCLASSEXTEND = "nativesdk"

追根溯源,看到应该创建的cmake/目录创建在:

/home/<user>/poky/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-cmake/3.10.2-r0/image/opt/poky/2.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/share/cmake/

但是,这个 cmake 目录在/opt/poky/2.4+snapshot/sysroots/x86_64-pokysdk-linux/usr/share/ 中无效,-实际上需要它的地方- 当我将 SDK 安装到 /opt 时,很遗憾。

关于如何正确生成 SDK,我还需要了解或做任何其他事情吗?

我真的被困在这里,任何帮助都非常感谢。

提前致谢。

编辑:我将 TOOLCHAIN_TASK 语句移至 layer.conf 并使用了 bitbake meta-toolchain,但这也不起作用。

EDIT2:我使用了带有PREFERRED_PROVIDER_cmake = "3.6.1" 的cmake 3.6 版,但也不起作用。

【问题讨论】:

    标签: linux cmake sdk yocto


    【解决方案1】:

    即将发布的 Yocto Project 2.5 Sumo 似乎存在一个错误。在这里,sysroots/x86_64-chargestorm-linux/usr/share/cmake/OEToolchainConfig.cmake 似乎被省略了。

    临时解决办法是添加

    TOOLCHAIN_HOST_TASK += "nativesdk-cmake-dev"
    

    是的,使用发布总是有帮助的,特别是如果您是某个项目的新手。请记住始终为所有包含的图层使用相同的发布分支。就我个人而言,我不会开始一个基于 Morty 的新项目,该项目是 1.5 年前在撰写本文时发布的,因为它可能很快就会失去 Yocto 项目的官方支持。

    【讨论】:

      【解决方案2】:

      顺便说一句,它似乎仍然是 Sumo 中的一个错误(或者这会是错误的功能吗……?)。刚刚被这个...解决方法看起来与描述的相同。

      (注意:这此时发布的版本...X-D)

      【讨论】:

        【解决方案3】:

        通过对每一层和 poky 本身使用发布(我使用“morty”,而不是“master 分支”)解决了问题。这显然非常重要。

        【讨论】:

        • Morty 是添加错误功能之前的版本。 1) 除非您需要它,否则最好使用 Sumo 或 Thud 进行发布... 2) ...如果是这样,您需要使用解决方法。
        • 问题解决了,我现在正在使用thud。谢谢提醒
        猜你喜欢
        • 2020-02-03
        • 2021-05-07
        • 1970-01-01
        • 2019-06-12
        • 2020-08-01
        • 2017-06-17
        • 1970-01-01
        • 2019-08-05
        • 1970-01-01
        相关资源
        最近更新 更多