如何解决为什么我的预编译二进制文件在 yocto 中发生了变化?
我想尝试在 Yocto 中使用 https://bell-sw.com/ 提供的 Liberica JDK。我没有看到它的食谱,所以我尝试创建自己的。它只是简单地拉下 32 位 arm 预编译的二进制文件并安装它们。这是我的 .bb
文件。
LICENSE = "CLOSED"
SRC_URI += "\
https://download.bell-sw.com/java/11.0.11+9/bellsoft-jdk11.0.11+9-linux-arm32-vfp-hflt-full.tar.gz \
"
SRC_URI[sha1sum] = "973d357361fd2a9c328e37c93e6f546ee43ade5f"
S = "${WORKDIR}/jdk-11.0.11-full"
INSANE_SKIP_${PN} = "ldflags"
INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_SYSROOT_STRIP = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
do_install() {
install -d ${D}/usr/share/java/
install -d ${D}/usr/lib/jvm/jdk-11.0.11-bellsoft
cp -r "${S}" ${D}/usr/lib/jvm/jdk-11.0.11-bellsoft
}
FILES_${PN} += "/"
do_package_qa[noexec] = "1"
EXCLUDE_FROM_SHLIBS = "1"
这会将它拉下来并将其添加到我的图像中。但是,当我刷新映像并启动它时,java 二进制段错误。我认为这很奇怪,所以我使用相同的校验和在目标上手动下载了相同的完全相同的 tarball 并提取了它,并且它工作得很好。然后我diff
编辑了这两个二进制文件,并注意到它们有些不同!这让我想知道 yocto/bitbake 是否可以对预编译的二进制文件做些什么。
执行 ls -l
表明二进制文件的大小也不同。这让我检查了工作区,看看文件在提取过程中是否发生了变化,但没有发生变化。
# Checking the workspace where I install the binary has the correct size
ls -l tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/bellsoft-jdk/11.0.11-r0/image/usr/lib/jvm/jdk-11.0.11-bellsoft/jdk-11.0.11-full/bin/java | awk '{print $5}'
8120
# Checking on the target where the image is installed has the incorrect size
ls -l /usr/lib/jvm/jdk-11.0.11-bellsoft/jdk-11.0.11-full/bin/java | awk '{print $5}'
9788
有谁知道什么可能导致二进制更改?
解决方法
我仍然不确定是什么导致了这种行为。但是,我随机尝试安装到 ${D}${datadir}/jvm/jdk-11.0.11-bellsoft
,然后它不再被修改。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。