gpt4 book ai didi

c - 如何在 yocto 中构建 hello world 食谱

转载 作者:行者123 更新时间:2023-11-30 14:33:22 25 4
gpt4 key购买 nike

  1. C 文件

int main() {
printf("Hello, World!\n");
return 0;
}
  • helloworld.bb
  • DESCRIPTION = "Recipe created by bitbake-layers"
    LICENSE = "MIT"
    LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"


    SRC_URI = "file://${BSPDIR}/poky/build-microchip/my_layer/recipes-example/helloworld/helloworld/helloworld.c"

    S = "/home/user/my_dir/poky/build-microchip/conf"

    do_compile() {
    ${CC} helloworld.c -o helloworld
    }

    do_install() {
    install -d ${D}${bindir}
    install -m 0755 helloworld ${D}${bindir}
    }
  • 运行命令
  • bitbake Hello World

    错误do_compile() block 中的错误 helloworld.c 文件未找到

    1. 文件树
        build-microchip/my_layer/recipes-examples/
    └── helloworld
    ├── helloworld
    │ └── helloworld.c
    └── helloworld.bb

    2个目录,2个文件

    最佳答案

    SRC_URI 中有绝对路径是相当不寻常的.

    对于名为 helloworld_0.1.bb 的食谱位于build-microchip/my_layer/recipes-examples/helloworld/ , SRC_URI默认情况下(按顺序)在您的食谱的以下目录之一 ( FILESPATH [1]) 中查找内容:

    1. build-microchip/my_layer/recipes-examples/helloworld/helloworld-0.1
    2. build-microchip/my_layer/recipes-examples/helloworld/helloworld
    3. build-microchip/my_layer/recipes-examples/helloworld/files

    所以,你实际上不需要传递任何这些目录名称,Yocto 会自己找到它。您只需转至 SRC_URI相对于上述路径之一的路径。

    如果你想使用配方当前目录之外的文件,通常是externalsrc类必须被继承(而且这样做通常不是一个好主意)。除非在 bbappends 的情况下,您使用 FILESEXTRAPATHS_prepend := "${THISDIR}/<otherdir>" 添加另一个路径到列表中其中 ${THISDIR}/<otherdir>在上面列表的第一位。

    请注意,可以多一层“抽象”,内容为 FILESOVERRIDES [2]。如有疑问,请始终查看 WORKDIR 中的 log.do_fetch的食谱,它将为您提供查找文件所遍历的所有路径以及它们遍历的顺序。

    SRC_URI = "file://helloworld.c"应该适合你。

    我非常确定S未设置为 Yocto 所期望的。 S [3] 是 do_unpack 之后 Yocto 源代码所在的目录任务。这是 Yocto 设置的临时目录。通常以 ${WORKDIR} 开头这是给定配方的临时目录。仅在本地源的情况下,设置S = "${WORKDIR}"因为来自SRC_URI的本地文件(以 file:// 开头的)放入 ${WORKDIR} 中通过 getter 。默认情况下设置为 ${WORKDIR}/<recipename-recipeversion> .

    do_compile任务运行于 B默认设置为 ${S} ,配方中设置不正确。这就是找不到您的文件的原因。[4]

    TL;博士:

    SRC_URI = "file://helloworld.c"
    S = "${WORKDIR}"

    [1] https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#var-FILESPATH

    [2] https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#var-FILESOVERRIDES

    [3] https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#var-S

    [4] https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#ref-tasks-compile

    关于c - 如何在 yocto 中构建 hello world 食谱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59369008/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com