java - 在 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 中是否有相同的依赖关系?
感谢帮助
解决方案
根据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
支持可能是候选人)。
推荐阅读
- google-apps-script - 我的脚本“从谷歌文档获取 URL”不再起作用 - 服务器故障 为什么?
- haproxy - “原因:Layer6 超时”可能意味着什么?
- acumatica - 使用 WEB API 添加注释
- bootstrap-4 - Liferay 7.1:在我的 liferay 主题中导入 Material Design Bootstrap
- c - 为什么我的引脚中断在整个过程中只工作一次?
- javascript - 是否有可能以编程方式从 ftp 链接下载文本内容?
- tensorflow - Google Colab 上的 Tensorflow-Keras 重现性问题
- vb.net - 使用 VB.NET 运行 WScript.exe
- excel - 通过 VBA 打开 excel 设置
- python - 如何在 Python 中解析 JSON 中的值