java - 在 uClinux 上更新 java

标签 java java-8 embedded-linux glibc uclinux

我想将我们的 uClinux 产品的 Java 更新到 ojava 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构建 uClinux 镜像的工具链自 2006 年以来未更新,其支持的最新 glibc 是 glibc 2.3.6。 我想知道我是否可以将 uClinux glibc 库更新到 2.4。是否有可能某些应用程序无法使用较新版本的 glibc? 另一个问题是我们是否需要与 crosstool toolcain (2.3.6) 使用相同版本的 glibc。

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

感谢帮助

最佳答案

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

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

关于java - 在 uClinux 上更新 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50626912/

相关文章:

Java流的处理顺序

linux - INITRAMFS_IMAGE_BUNDLE 上的 Yocto Warrior 和 SD 卡镜像上的 Linux 内核镜像

audio - Linux 设备驱动程序通过 USB 发送和接收音频

c - 尝试写入 mtd 设备时获取 EINVAL

java - 安卓Java : View cannot be applied to ()

java - 为什么 flatMap() 之后的 filter() 在 Java 流中是 "not completely"懒惰的?

java - 如何在多态工厂模式中避免大量样板文件

java-8 - 流 - 嵌套集合 - 转换为映射

Java 8 设置全局时间格式化程序

java - 用于测试的 hibernate 配置 -(新手哇)