Yocto中的图像和包目录有什么区别

What is the difference between image and package directory in Yocto

我写了一个基本的 hello world 食谱

DESCRIPTION = "Simple helloworld C application"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://userprog.c file://ReadMe.txt"

S = "${WORKDIR}"

do_compile() {
    ${CC} -DUSE_SYSCALL userprog.c ${LDFLAGS} -o userprog
}

do_install() {
    install -d ${D}${bindir}
    install -m 0755 userprog ${D}${bindir}
    install -d ${D}${docdir}
    install -m 0644 ReadMe.txt ${D}${docdir}
}

之后查看WORKDIR,'package'和'image'文件夹的内容是一样的

$树图片/

image/
└── usr
    ├── bin
    │   └── userprog
    └── share
        └── doc
            └── ReadMe.txt

$树包

package
└── usr
    ├── bin
    │   └── userprog
    └── share
        └── doc
            └── ReadMe.txt

这两个文件夹有什么区别,我知道图像文件夹在 do_install 任务中控制,在包文件夹中呢?

images/ 用于暂存安装目录,类似于 make install DESTDIR=<..>

package 用于 do_package 任务,然后在 packages-split

中进一步拆分为单独的输出包

即使内容看起来相似上下文不同,因为它对 PACKAGESFILES 变量进行操作,如果这些变量中未提及文件,它不会从 image/改成package/Yocto project manual

中有详细说明