我有一个'binary'(即,不要编译)文件的目录,只希望将它们安装到我的目标根文件系统上。
我看过几篇文章,似乎对我没有用。
此食谱的所需功能是:
myRecipe / myFiles /-> myRootFs / dir /至/安装
我当前的尝试是:
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文档,这真的很好!只是找不到这样的例子!
您只需将这些文件复制到目标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"
请注意,使用简单的递归副本将最终出现主机污染警告,因此您需要使用以下参数进行复制:
do_install() {
[...]
cp --preserve=mode,timestamps -R ${S}${anydir}/Data/* ${D}${anyotherdir}/Data
[...]
}
[就像其他poky中的食谱一样,或者只是遵循官方的recommendations,以避免所有权和权限问题。
对于这样的配方文件夹:
.
├── 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/* "
我认为这对您不起作用,因为您在“ install -m”之后忘记添加模式值,]]
请参见安装命令的手册页:https://linux.die.net/man/1/install
install -m [mode] src destination