我有一个配方,可以成功调用旧版构建命令来交叉编译目标。
作为副作用,它会生成一些在构建中使用的自定义 native 工具。
我想将这些工具收集到 -tools-native
包中,以允许其他配方依赖主包来访问工件,并使用 -tools-native
> 打包以进一步处理这些工件。
我只需添加以下内容即可构建这样的 native 包:
PROVIDES = "${PN} ${PN}-tools-native"
SYSROOT_DIRS += "/"
PACKAGES += "${PN}-tools-native"
FILES_${PN}-tools-native += "/native-bin/*"
并让安装部分将 native 工具安装到/native-bin/
但它在某种程度上并不是一个真正的 native 包,当依赖
由附加配方决定时,native-bin 工件会安装在
recipe-sysroot而不是
recipe-sysroot-native`
我还必须安装工具 0644 或 bitbake 尝试删除它们(但失败了,因为它们是 native 构建)。
由于 native 工具已由旧版构建命令生成,因此我不需要实际作为 -native
配方变体进行调用。
这是一个漫长的过程,我也不想运行两次。
目前,我通过将其他食谱DEPEND
放在recipe-native-tools
上来解决这个问题,并修复权限和路径
但是执行此操作的正确方法是什么?
最佳答案
这通常由单独的配方处理。没有机制可以共享目标配方中的 native 二进制文件,因为它们的任务哈希中包含错误类型的信息(它们根据目标架构而变化)。
目标配方不会将其 bindir/sbindir 安装到 sysroot 中,因为我们无法运行它们,并且正如您所提到的,它们是错误的架构,因此它们会混淆 strip 等。
您可以尝试使用一个依赖于此目标配方的 native 配方,并将目标配方保存的二进制文件安装到 do_install 的 ${D} 中。这很可能会发出一些警告,因为一般来说,原生配方不应该依赖于目标配方,但如果你不能构建两次,这可能是你最好的选择。
关于yocto - 配方还产生需要包装的本地输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56971910/