Прежде всего, чтобы создать свой собственный мета-слой, вы должны запустить команду yocto-layer create MyRecipe
в своей среде Yocto. Это делается для того, чтобы у вас был весь необходимый элемент в вашем мета-слое. Убедитесь в том, чтобы поставить новый мета-слой в конф/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
. Это местоположение в каталоге сборки, в котором хранится исходный код распакованного рецепта. Таким образом, myFileA
и myFileB
перемещаются/копируются туда, когда myRecipe
строит.
Обычно S
равно ${WORKDIR}
, это эквивалентно ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}
Фактический каталог зависит от нескольких вещей:
TmpDir: верхнего уровня выходной сборки каталог
MULTIMACH_TARGET_SYS: Идентификатор целевой системы
PN: Название рецепта
EXTENDPE: эпоха - (если РЕ не указан, что обычно имеет место для большинства рецептов, то EXTENDPE пустой)
П.В.: Рецепт версия
PR: редакция Рецепта
После этого мы inherit allarch
. This class is used for architecture independent recipes/data files (usually scripts).
Тогда последнее, что нам нужно сделать, это скопировать файлы.
${D}
- это место в каталоге сборки, в котором компоненты устанавливаются задачей do_install. Это место по умолчанию равно ${WORKDIR}/image
${WORKDIR}/image
также можно назвать каталогом /
в целевой системе.
Перейти к ${D}
директории и создать вызов папки TestFolder
Затем скопируйте myFileA из ${WORKDIR}
в ${D}/TestFolder
P.S. Пожалуйста, добавьте комментарий для исправления. Здесь может быть ошибочная информация, потому что я все это узнал сам.
Не могли бы вы рассказать мне, что такое значение переменной WORKDIR? - Нужно ли быть абсолютным или относительным путем? –
Также вы могли бы рассказать мне, что такое $ {D}? Где назначается значение D? –
WORKDIR определяется следующим образом: '$ {TMPDIR}/work/$ {MULTIMACH_TARGET_SYS}/$ {PN}/$ {EXTENDPE} $ {PV} - $ {PR}'. путь должен быть абсолютным. TMPDIR находится в '/ yocto-environment/build/tmp /'. [Http://www.yoctoproject.org/docs/2.0/ref-manual/ref-manual.html#var-WORKDIR] –