我正在尝试编写一个配方,以在构建整个映像时将两个文件(MyfileA,MyfileB)简单地复制到特定目录。这是我的目录结构:
MyDir/MyRecipe.bb
MyDir/files/MyfileA
MyDir/files/MyfileB
我希望将这两个文件复制到home的文件夹中(该文件夹最初将不存在,因此应创建目录)。该文件夹可以称为“ Testfolder”
这是我的bitbake文件的样子
DESCRIPTION = "Testing Bitbake file"
PR = "r0"
SRC_URI = "file://MyfileA \
file://MyfileB "
do_install() {
install -d MyfileA ~/TestFolder/
}
请让我知道我在这里做错了什么吗?
当我对此进行bitbake时,我得到以下内容
The BBPATH variable is not set and bitbake did not find a conf/bblayers.conf file in the expected location.
Maybe you accidentally invoked bitbake from the wrong directory?
DEBUG: Removed the following variables from the environment: LANG, LS_COLORS, LESSCLOSE, XDG_RUNTIME_DIR, SHLVL, SSH_TTY, OLDPWD, LESSOPEN, SSH_CLIENT, MAIL, SSH_CONNECTION, XDG_SESSION_ID, _, BUILDDIR
在这方面的任何帮助将不胜感激。
最佳答案
首先,要创建自己的元层,应在Yocto Environment中运行命令yocto-layer create MyRecipe
。这是为了确保您在meta层中具有所有必要的元素。确保将新的元层放入conf / bblayers.conf
可以找到创建HelloWorld食谱视频here
第二,将文件从一个目录复制到另一个目录。
DESCRIPTION = "Testing Bitbake file"
SECTION = "TESTING"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PR = "r0"
SRC_URI = "file://MyfileA \
file://MyfileB "
#specify where to get the files
S = "${WORKDIR}"
inherit allarch
#create the folder in target machine
#${D} is the directory of the target machine
#move the file from working directory to the target machine
do_install() {
install -d ${D}/TestFolder
install -m ${WORKDIR}/MyfileA ${D}/TestFolder
}
为了获得更多详细信息,这是我对文件在Yocto中如何移动的理解。
您有一个将元数据存储在
/sourced/meta-mylayer/recipes-myRecipe/
中的目录。在该目录中,将存在一个与配方同名的文件夹。即myRecipe/
myRecipe_001.bb
。您将与
myRecipe.bb
相关的文件(通常是补丁程序)存储在myRecipe/
中,以便SRC_URI
进入该myRecipe/
目录中以获取文件。即myFileA
,myFileB
然后,指定
S
。这是Build Directory中解包的配方源代码所在的位置。通过这种方式,myFileA
和myFileB
在构建myRecipe
时被移动/复制到那里。通常,
S
等于${WORKDIR}
,这等效于${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}
实际目录取决于几件事:
TMPDIR:顶级构建输出目录
MULTIMACH_TARGET_SYS:目标系统标识符
PN:配方名称
EXTENDPE:时期-(如果未指定PE,通常大多数配方都使用PE,则EXTENDPE为空白)
PV:配方版本
PR:食谱修订
之后,我们
inherit allarch
。 This class is used for architecture independent recipes/data files (usually scripts)。然后,我们要做的最后一件事就是复制文件。
${D}
是Build Directory中通过do_install任务安装组件的位置。此位置默认为${WORKDIR}/image
${WORKDIR}/image
在目标系统中也可以描述为/
目录。转到
${D}
目录并创建一个文件夹调用TestFolder
然后,将myFileA从
${WORKDIR}
复制到${D}/TestFolder
附言请添加评论以进行修复。这里可能有错误的信息,因为我是自己学习所有这些的。
关于yocto - 烘烤食谱-对图像进行简单复制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36163173/