0

抱歉,我对 yocto 的语法有点陌生,这就是我修改食谱的方式:

LICENSE  = "LGPLv2.1"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI = "file://myscript.sh"
FILES_${PN} += "${sysconfdir}/init.d/myscript.sh"

do_install() {
    install -d ${D}${sysconfdir}/init.d
    install -m 0755 ${WORKDIR}/myscript.sh ${D}${sysconfdir}/init.d/
}

配方被添加到构建中,因为如果我删除 LICENSE 行,yocto 图像将不会被烘焙。保存配方的文件夹名为“customssh”,在此文件夹中,我有一个名为 customsh_0.1.bb 的配方和一个名为“files”的子文件夹,其中保存了 myscript.sh。烘焙完映像后,我运行此命令以查看 myscript.sh 是否已放置在 rootfs 中: find 。-name 'myscript*' 将返回文件所在的位置:

./meta-swi/common/recipes-core/customssh/files/myscript.sh

在食谱中,这条线正确吗?

install -m 0755 ${WORKDIR}/myscript.sh ${D}${sysconfdir}/init.d/
4

1 回答 1

1

如果这是根配方而不是bbappend一种用途do_install,而不是do_install_append

确保${D}${sysconfdir}/init.d在复制到它之前创建它

do_install(){
   install -d ${D}${sysconfdir}/init.d
   install -m 0755 ${WORKDIR}/myscript.sh ${D}${sysconfdir}/init.d/
}

现在,确保指定您安装的文件,这样do_package就不会失败

FILES_${PN} += "${sysconfdir}/init.d/myscript.sh"
于 2021-09-02T11:56:26.343 回答