首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Yocto食谱可以覆盖另一个菜谱中的文件

Yocto食谱可以覆盖另一个菜谱中的文件
EN

Stack Overflow用户
提问于 2020-07-20 14:38:06
回答 1查看 951关注 0票数 1

我需要用我的自定义菜谱构建的库覆盖从给定菜谱构建的共享库(让我们称之为packageX)。基本上,我需要从libA.so构建和生成/usr/lib中的/usr/lib和packageX。在此之后,我的菜谱应该生成定制的libA.solibB.so,以及将要添加的其他库。

我试图创建一个自定义的菜谱来生成所需的库,但它们不能在原始库上编写。

代码语言:javascript
运行
复制
ERROR: my_recipe-1.0.0-r0 do_populate_sysroot: The recipe my_recipe is trying to install files into a shared area when those files already exist.
Those files and their manifest location are:
.../usr/lib/libA.so.1.0.0
Matched in b'manifest-packageX.populate_sysroot'
.../usr/lib/libB.so.1.0.0
Matched in b'manifest-packageX.populate_sysroot'
Please verify which recipe should provide the above files.
ERROR: my_recipe-1.0.0-r0 do_populate_sysroot: If the above message is too much, the simpler version is you're advised to wipe out tmp and rebuild (reusing sstate is fine). That will likely fix things in most (but not all) cases.

在此之后,我尝试更改packageX配方:

代码语言:javascript
运行
复制
PACKAGES =+ "libC libD libE"
FILES_libC = "${libdir}/libC${SOLIBS}"
FILES_libD = "${libdir}/libD${SOLIBS}"
FILES_libE = "${libdir}/libE${SOLIBS}"

# compile function will build the libraries

do_install_append_class-target () {
    install -Dm 0755 ${S}/my_recipe/bin/libA.so ${D}${libdir}/libA.so.1.0.0
    install -Dm 0755 ${S}/my_recipe/bin/libB.so ${D}${libdir}/libB.so.1.0.0
    install -Dm 0755 ${S}/my_recipe/bin/libC.so ${D}${libdir}/libC.so.1.0.0
    install -Dm 0755 ${S}/my_recipe/bin/libD.so ${D}${libdir}/libD.so.1.0.0
    install -Dm 0755 ${S}/my_recipe/bin/libE.so ${D}${libdir}/libE.so.1.0.0
    oe_libinstall -so libA ${D}${libdir}
    oe_libinstall -so libB ${D}${libdir}
    oe_libinstall -so libC ${D}${libdir}
    oe_libinstall -so libD ${D}${libdir}
    oe_libinstall -so libE ${D}${libdir}
}

产出如下:

代码语言:javascript
运行
复制
ERROR: packageX-1.0.2j-r0 do_package_qa: QA Issue: non -dev/-dbg/nativesdk- package contains symlink .so: packageX path '.../packageX/1.0.2j-r0/packages-split/packageX/usr/lib/libA.so'
non -dev/-dbg/nativesdk- package contains symlink .so: packageX path '.../packageX/1.0.2j-r0/packages-split/packageX/usr/lib/libB.so' [dev-so]
ERROR: packageX-1.0.2j-r0 do_package_qa: QA Issue: No GNU_HASH in the elf binary: '.../packageX/1.0.2j-r0/packages-split/libC/usr/lib/libC.so.1.0.0' [ldflags]
ERROR: packageX-1.0.2j-r0 do_package_qa: QA Issue: No GNU_HASH in the elf binary: '.../packageX/1.0.2j-r0/packages-split/libE/usr/lib/libE.so.1.0.0' [ldflags]
WARNING: packageX-1.0.2j-r0 do_package_qa: QA Issue: /usr/lib/libE.so.1.0.0 contained in package libE requires libD.so, but no providers found in RDEPENDS_libE? [file-rdeps]
ERROR: packageX-1.0.2j-r0 do_package_qa: QA Issue: No GNU_HASH in the elf binary: '.../packageX/1.0.2j-r0/packages-split/libD/usr/lib/libD.so.1.0.0' [ldflags]
WARNING: packageX-1.0.2j-r0 do_package_qa: QA Issue: /usr/lib/libD.so.1.0.0 contained in package libD requires libC.so, but no providers found in RDEPENDS_libD? [file-rdeps]

结论:我的目标是覆盖Yocto食谱中的库。保持packageX配方不变将是完美的。那么,我如何从Yocto食谱中实现这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2022-10-14 13:47:12

您可以使用变量SSTATE_ALLOW_OVERLAP_FILES来实现这一点。但是,在大多数情况下,实现.bbappend文件是一种更好的策略。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62997828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档