如何编写yocto / bitbake配方以将目录复制到目标根文件系统

时间:2016-11-21 14:34:18

标签: directory copy yocto bitbake recipe

我有一个'二进制'的目录(即不编译)文件,只是希望将它们安装到我的目标根文件系统上。

我看过几篇文章,其中没有一篇似乎对我有用。

此配方的所需功能是:

myRecipe / myFiles / - > myRootFs /目录/到/安装

我目前的尝试是:

SRC_URI += "file://myDir"

do_install() {
         install -d ${D}/path/to/dir/on/fs
         install -m ${WORKDIR}/myDir ${D}/path/to/dir/on/fs
}

我不能总体上抱怨Yocto文档,它真的很棒!只是找不到这样的例子!

4 个答案:

答案 0 :(得分:8)

您只需将这些文件复制到目标rootfs中即可。如果没有安装在标准位置,请不要忘记将它们包装好。

SRC_URI += "file://myDir"

do_install() {
    install -d ${D}/path/to/dir/on/fs
    cp -r ${WORKDIR}/myDir ${D}/path/to/dir/on/fs
}
FILES_${PN} += "/path/to/dir/on/fs"

答案 1 :(得分:2)

请注意,使用简单的递归副本最终会收到主机污染警告,因此您需要使用以下参数进行复制:

do_install() {
     [...]
     cp --preserve=mode,timestamps -R ${S}${anydir}/Data/* ${D}${anyotherdir}/Data
     [...]
}

就像其他秘诀一样,或者只是遵循官方的recommendations以避免所有权和权限问题。

答案 2 :(得分:0)

对于像这样的食谱文件夹:

.
├── files
│   ├── a.txt
│   ├── b.c
│   └── Makefile
└── myrecipe.bb

您可以使用以下配方将其安装到rootfs中的特定文件夹中:

SRC_URI = " file://*"
do_install() {
    install -d ${WORKDIR}/my/dir/on/rootfs
    install -m 0755 ${S}/* ${WORKDIR}/my/dir/on/rootfs/*
}
FILES_${PN} = "/my/dir/on/rootfs/* "

答案 3 :(得分:0)

我认为这对你不起作用,因为你忘了添加模式值,在" install -m",

之后

参见install命令的手册页: https://linux.die.net/man/1/install

install -m [mode] src destination