【问题标题】:Updating java on uClinux在 uClinux 上更新 java
【发布时间】:2018-05-31 14:40:15
【问题描述】:

我想将我们的 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 工具链构建自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。我看到 here 嵌入的 java 需要 linux 内核 2.6.28 或更高版本。 我们在 java se 中是否有相同的依赖关系?

感谢您的帮助

【问题讨论】:

  • Java 虚拟机不依赖于内核版本,它们通常是为特定的处理器-O/S 组合构建的,不依赖于任何一个的版本。它们确实依赖于少数特定于操作系统的库,例如 libc。

标签: java java-8 embedded-linux glibc uclinux


【解决方案1】:

根据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 支持可能是一个候选者)。

【讨论】:

    猜你喜欢
    • 2017-04-25
    • 2011-01-30
    • 1970-01-01
    • 2014-07-08
    • 2020-08-18
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2015-03-15
    相关资源
    最近更新 更多