为什么我的预编译二进制文件在yocto中发生了变化



我想尝试使用由https://bell-sw.com/在Yocto。我没有看到它的配方,所以我试着自己制作。它只是简单地取下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,然后它再也没有被修改。

相关内容

最新更新