首页 > 解决方案 > 在 uClinux 上更新 java

问题描述

我想将我们的 uClinux 产品的 Java 更新到 Java 8。问题是 Java 7 及更高版本似乎依赖于 glibc-2.4,而安装的 glibc 版本是 2.3.6。在终端中运行 java -version 时,我收到以下消息:

Error: dl failure on line 893
Error: failed /usr/java/jre/lib/i386/client/libjvm.so, because /lib/libc.so.6: version `GLIBC_2.4' not found (required by /usr/java/jre/lib/i386/client/libjvm.so)

我们正在使用crosstool 工具链来构建自 2006 年以来未更新的 uClinux 映像,并且它支持的最新 glibc 是 glibc 2.3.6。我想知道我是否可以将 uClinux glibc 库更新到 2.4。是否有可能某些应用程序不适用于较新版本的 glibc?另一个问题是我们是否需要与 crosstool toolcain (2.3.6) 使用的 glibc 版本相同。

最后一个问题是 java 8 是否也依赖于 linux 内核版本?目前我们使用的内核版本是linux 2.6.24。我在这里看到嵌入式 java 需要 linux 内核 2.6.28 或更高版本。我们在 java se 中是否有相同的依赖关系?

感谢帮助

标签: javajava-8embedded-linuxglibcuclinux

解决方案


根据README-builds.html,OpenJDK 8 是在 Fedora 9 上构建的,Fedora 9 具有 glibc 2.8(加上 backports)。所以你应该至少升级到那个版本的 glibc。(尽管 Fedora 9 被用作构建环境,但这并不意味着支持在原始 Fedora 9 内核上运行。)

在内核方面,OpenJDK 8 仍然支持 Red Hat Enterprise Linux 5,它使用 Linux 2.6.18 以及许多很多的向后移植,其中一些涵盖了 Linux 2.6.24 之后添加的新功能。我不记得 OpenJDK 是否使用了其中的任何一个(O_CLOEXEC支持可能是候选人)。


推荐阅读