我需要在一个配方(foo
)中安装一个本机脚本,称之为foo-native
,然后在另一个(目标)配方的do_compile
步骤中使用它 - 调用它bar
。
我的(最小)原生食谱
SRC_URI = "file://foo"
LICENSE = "CLOSED"
inherit native
BBCLASSEXTEND = "native"
S = "${WORKDIR}"
do_compile() {
:
}
do_install() {
install -d ${D}/usr/bin
install ${WORKDIR}/foo ${D}/usr/bin
}
脚本foo
存在于名为files
的目录中,该目录位于配方旁边。即。
foo/
├── files
│ └── foo
└── foo.bb
bar
SRC_URI = ""
LICENSE = "CLOSED"
DEPENDS = "foo-native"
do_fetch[noexec] = "1"
do_configure[noexec] = "1"
do_compile() {
foo >myfile.json
}
do_install() {
install -d ${D}/etc
install ${WORKDIR}/myfile.json ${D}/etc
}
我得到的错误是do_compile
的{{1}}任务,它只是说找不到bar
(即没有安装到路径上的目录中)
答案 0 :(得分:6)
首先,您不需要该行
inherit native
foo.bb
中的。它由BBCLASSEXTEND = "native"
为您照顾。
其次,将do_install
更改为:
do_install() {
install -d ${D}${bindir}
install ${WORKDIR}/foo ${D}${bindir}
}
注意:使用${bindir}
代替/usr/bin
。 ${bindir}
是使用${prefix}
确定的,-native
又会被更改,例如在构建食谱的{{1}}版本时。