2

以下是我想知道答案的问题清单:

  1. 在 Solaris 10 中从 openjdk 源构建的 jdk8u 可以用于 Solaris 11 吗?
   Solaris 10:
    Oracle Solaris 10 8/11 s10x_u10wos_17b X86
           Assembled 23 August 2011
    Solaris studio: 12.3
    bash-3.2# isainfo -b
    64
 
    Solaris 11:
         Oracle Solaris 11.4 X86
         Assembled 26 March 2020
         # isainfo -b
         64

AdoptOpenJDK 等一些供应商为 Solaris 10 和 11 提供了相同的 JDK 和 JRE 二进制文件。我是否也可以在 Solaris 10 中为 Solaris 11 使用相同的 jdk 构建?

  1. 我们可以为 Solaris 11 x86 构建 jdk8u。来自 openjdk 的 Jdk8u 源代码检查先决条件,以及来自 Solaris studio 12.1 到 12.4 的 CC 和 C++ 编译器。但是 Solaris 11 支持 Solaris studio 12.4(开发者工作室)以上的版本。任何人都尝试过从 http://hg.openjdk.java.net/jdk8u/jdk8u/构建它。

我确实试了几次。我已经尝试在 Solaris 10 中构建并且成功了。但是 Solaris 11: 2.a) jdk8u 构建不成功。jdk8u 也有一个脚本来检查 c/c++ 编译器是否是它的 solaris studio。如果我们将 --with-tools-dir 作为开发人员 sutio 12.4/12.5 或 12.6 说它不是 solaris studio,则它不接受。但是我修改了脚本以接受这些版本并能够继续构建,但出现了许多编译错误。为此,我在不同的线程中发布了但没有得到任何回复。所以我只想知道它是否可以完成,而不是敲我的头。如果有人尝试在 Solaris 11 中从 openjdk 构建 jdk8u,请帮助我。

4

1 回答 1

2

是的,在 Solaris 10 上编译并在 Solaris 11 上运行几乎肯定可以工作。Sun 和现在的 Oracle 一直提供与 Solaris 的重要兼容性保证——如果满足某些条件,则保证在早期版本的 Solaris 上编译的二进制文件可以在更高版本上工作。

根据Oracle Solaris 保证计划(我的粗体文本):

Oracle Solaris 的设计和测试旨在保护客户对软件的投资。

虽然新版本中可能会引入新功能,但 Oracle Solaris 的设计具有二进制接口的连续性,因此在早期版本上开发的应用程序可以继续运行。这使客户能够购买新系统或升级旧系统上的操作系统并继续运行他们现有的应用程序。

购买了 Oracle 操作系统标准支持的客户和合作伙伴可以在解决从早期操作系统版本迁移二进制应用程序时发现的兼容性问题方面获得帮助。

对于开发人员,操作系统提供了一个架构中立的 API,这意味着在 SPARC 架构上开发的程序可以重新编译以在 x86 上运行,反之亦然

有关二进制和源保证的更多详细信息,请参见下文。

Oracle Solaris 二进制应用程序保证

Oracle Solaris 二进制应用程序保证反映了 Oracle 对应用程序从一个版本的 Oracle Solaris 到下一个版本的兼容性的信心,旨在使重新认证成为过去。

Oracle Solaris 版本之间的二进制兼容性有助于保护您在应用程序开发、培训和维护方面的长期投资:

在 Solaris 2.6 或更高版本上构建的二进制应用程序,它使用稳定性中定义的操作系统接口。5 在 Oracle Solaris 的后续版本(包括其初始版本和所有更新)上运行,即使该应用程序尚未针对这些最新版本重新编译.

如果应用程序在受支持的最新 Oracle Solaris 操作系统上运行时遇到兼容性问题,将提供如下所述的支持:

对于 Oracle Solaris 10

使用集成的“appcert”实用程序(请参阅 appcert 的手册页)来检查您的应用程序。如果未报告错误但运行应用程序的问题仍然存在,则应打开服务请求 (SR) 以获得支持。

如果您正在运行受支持的 Solaris 副本,如果您的应用程序符合上述标准但无法在更高版本的 Solaris 上运行,Oracle 会将其视为 Solaris 中的错误。 请注意,Solaris 2.6 于 1997 年发布。如果您当时构建了二进制文件,Oracle 保证它今天仍将在 Solaris 11 上运行。

我没有appcert针对 OpenJDK 代码库运行过,因此 OpenJDK 是否属于上述保证尚不得而知,但根据我的经验,我从未见过任何在 Solaris 10 上编译但在 Solaris 11 上失败的应用程序。

为了比较,这里是 Red Hat Enterprise Linux 7 兼容性指南https ://access.redhat.com/articles/rhel-abi-compatibility 请注意,Red Hat 甚至不保证他们不会做类似的事情更改版本中的 LDAP API 。

于 2020-07-17T13:22:22.527 回答