如何解决Yocto:do_rootfs 失败,因为找不到我正在构建的包
尝试使用 Intel
构建系统在我的目标 Yocto
平台中添加一个新包。新包是 intel-cmt-cat
,其源代码取自 here。查看示例后,我创建了我的简单配方文件:
% cat intel-cmt-cat_4.1.0.bb
SUMMARY = "Short summary"
DESCRIPTION = "Short description."
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://LICENSE;md5=c63eb1250e8724441150d665efe12012"
SRC_URI = "git://github.com/intel/intel-cmt-cat.git;protocol=https"
SRCREV = "30fadea5cb82ff99f56e46172c7d20fdb24b2338"
S = "${WORKDIR}/git"
没什么特别的,应该工作,但是它失败了(我删除了冗长的 dnf 命令,使它变得简短):
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: myimage-1.0-r0 do_rootfs: Could not invoke dnf.
dnf -v --rpmverbosity=info -y -c dnf.conf package1 package2 ... intel-cmt-cat
...
repo: using cache for: oe-repo
not found other for:
not found modules for:
not found deltainfo for:
not found updateinfo for:
oe-repo: using metadata from Thu 04 Mar 2021 07:12:38 PM UTC.
No module defaults found
No match for argument: intel-cmt-cat
Error: Unable to find a match
...
ERROR: Function failed: do_rootfs
在我看来,do_rootfs()
函数失败了。我检查了构建目录,可以看到源已经被获取和构建。但是,后面的步骤失败了:如您所见,它无法找到我的包裹(据我所知)。
我做错了什么?
解决方法
阅读 yoctoproject.org 上的手册后,我想出了以下食谱:
SUMMARY = "Short summary"
DESCRIPTION = "Short description."
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://LICENSE;md5=c63eb1250e8724441150d665efe12012"
SRC_URI = "git://github.com/intel/intel-cmt-cat.git;protocol=https"
SRCREV = "30fadea5cb82ff99f56e46172c7d20fdb24b2338"
S = "${WORKDIR}/git"
TARGET_CC_ARCH += "${LDFLAGS}"
do_compile() {
oe_runmake PREFIX=/usr
}
do_install() {
oe_runmake PREFIX=${D}/usr NOLDCONFIG=y install
rm -rf ${D}/usr/man
rm -rf ${D}/usr/include
}
INSANE_SKIP_${PN} += "already-stripped"
FILES_${PN} += "${libdir}/libpqos* ${bindir}/pqos* ${bindir}/rdtset"}
intel-cmt-cat 不使用 cmake
,只是使用旧的 make
和 Makefile。
我只依赖包的 LDFLAGS
并且没有在配方中传递任何内容,因此这在构建过程中导致错误:
elf 二进制文件中没有 GNU_HASH:...
为了解决这个问题,添加 TARGET_CC_ARCH
指令。
我明确调用 oe_runmake 函数,因为我想传递不同的 PREFIX
值(默认为 /usr/local);接下来在 do_install 中,我传递 NOLDCONFIG=y ,它不会调用 ldconfig
并最终跳过检查(通过指令 INSANE_SKIP),如果生成的二进制文件尚未被剥离。这样做是因为 Makefile 已经调用了 install -s ...
而我不想修补 Makefile 等。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。