Yocto 构建上的 Oracle JDK 安装

Oracle JDK installation on Yocto build

我正在尝试在我的 yocto 构建上安装 Oracle JDK,因为构建 OpenCV 需要它 Java API.

这是我的配置文件:

MACHINE ??= "intel-corei7-64"

DISTRO ?= "poky"

PACKAGE_CLASSES ?= "package_deb"

SDKMACHINE ?= "x86_64"

EXTRA_IMAGE_FEATURES ?= "debug-tweaks"

USER_CLASSES ?= "buildstats image-mklibs image-prelink"

PATCHRESOLVE = "noop"

BB_DISKMON_DIRS = "\
    STOPTASKS,${TMPDIR},1G,100K \
    STOPTASKS,${DL_DIR},1G,100K \
    STOPTASKS,${SSTATE_DIR},1G,100K \
    STOPTASKS,/tmp,100M,100K \
    ABORT,${TMPDIR},100M,1K \
    ABORT,${DL_DIR},100M,1K \
    ABORT,${SSTATE_DIR},100M,1K \
    ABORT,/tmp,10M,1K"


PACKAGECONFIG_append_pn-qemu-native = " sdl" 
PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"

CONF_VERSION = "1"

# Modify the following line accoring to your Host Machine setup
# Example: CPU with 6 core 12 threads use the following configuration. 
BB_NUMBER_THREADS = '12' 
PARALLEL_MAKE = '-j 12'

# Java installation 
IMAGE_INSTALL_append += " gtkperf libxslt oracle-jse-jre " 
LICENSE_FLAGS_WHITELIST += "oracle_java" 
PREFERRED_VERSION_xserver-nodm-init = "1.0"


# OpenCV installation 
CORE_IMAGE_EXTRA_INSTALL += "opencv opencv-samples libopencv-core-dev libopencv-highgui-dev libopencv-imgproc-dev libopencv-objdetect-dev libopencv-ml-dev"

bblayers.conf 设置正确。我在每一层都使用莫蒂分支。 对于构建,我只需启动命令:

bitbake core-image-sato

构建成功结束,但我在目标机器上遇到以下错误:

root@intel-corei7-64:~# java -version
-sh: /usr/bin/java: No such file or directory

但是

root@intel-corei7-64:/usr/bin# ls -l | grep java
lrwxrwxrwx 1 root root      31 Apr  1 11:40 java -> /usr/share/jre1.8.0_91/bin/java

并查看所述目录

root@intel-corei7-64:/usr/share/jre1.8.0_91/bin# ls -l
total 388
lrwxrwxrwx 1 root root      8 Apr  1 11:40 ControlPanel -> jcontrol
-rwxr-xr-x 1 1001 1001   5080 Apr  1 09:14 java
-rwxr-xr-x 1 1001 1001 103920 Apr  1 09:14 javaws
-rwxr-xr-x 1 1001 1001   6264 Apr  1  2016 jcontrol
-rwxr-xr-x 1 1001 1001   5208 Apr  1 09:14 jjs
-rwxr-xr-x 1 1001 1001   5208 Apr  1 09:14 keytool
-rwxr-xr-x 1 1001 1001   5416 Apr  1 09:14 orbd
-rwxr-xr-x 1 1001 1001   5224 Apr  1 09:14 pack200
-rwxr-xr-x 1 1001 1001   5264 Apr  1 09:14 policytool
-rwxr-xr-x 1 1001 1001   5208 Apr  1 09:14 rmid
-rwxr-xr-x 1 1001 1001   5216 Apr  1 09:14 rmiregistry
-rwxr-xr-x 1 1001 1001   5232 Apr  1 09:14 servertool
-rwxr-xr-x 1 1001 1001   5448 Apr  1 09:14 tnameserv
-rwxr-xr-x 1 1001 1001 200400 Apr  1 09:14 unpack200

我需要做更多的事情来正确构建图像吗?我的配置文件有什么问题吗?有人遇到同样的错误吗?

我无法安装 Oracle JDK 但我设法安装了 openjdk-8 并成功启用了 OpenCV Java API.

I made a guide 如何实现。

我 运行 遇到了同样的问题,在 Fabio Berton from O.S. Systems 的慷慨帮助下,我们发现问题与 /usr/bin/java 依赖于 /lib64/ld-linux-x86-64.so.2

您可以通过在目标内部打开 shell 并执行 strings /usr/lib/jvm/java-8-oracle/bin/java.

来检查

我们还发现/lib/ld-linux-x86-64.so.2是link到/lib/ld-2.26.so的符号。

所以你所要做的就是像这样创建一个oracle-jse-jdk_1.7.0.bbappend

FILES_${PN} += "/lib64/ld-linux-x86-64.so.2"

do_install_append() {
    install -d ${D}/lib64
    cd ${D}/lib64
    ln -s ../lib/ld-2.26.so ld-linux-x86-64.so.2 
}

此致, 贝尔纳多