如何在 M1 Macbook 上编译 OpenJDK 11?

时间:2021-07-13 07:51:28

标签: java java-11 openjdk-11

我想为 M1 MacBook 编译 OpenJDK 11。

首先,我尝试使用 Zulu JDK,但我没有找到编译它的方法。

然后,我尝试在 M1 上尝试编译 OpenJDK,但是当我运行 sh configure 时会报错。

错误是:

<块引用>

configure:目标(64)中测试的位数不同于 预期在目标 (32) 中找到的位数配置: 错误:无法继续。

那么,我该如何编译它?

2 个答案:

答案 0 :(得分:5)

tl;博士

<块引用>

我想在 M1 MacBook 上编译 jdk。

不要尝试编译 OpenJDK。代码库庞大而复杂。而且没有必要,因为其他人提供了构建和安装程序。

对于使用 Apple Silicon 而不是 Intel 的 Mac,自 2021 年 8 月起,我建议对 macOS / AArch64 使用 early-access build of Java 17。正式版将于 9 月发布,可能是 LTS

或者,使用由不同供应商提供的早期 Java 版本的构建。例如,Azul Systems announced 2020-11 计划为基于 Apple SiliconARM 的 Mac 提供 OpenJDK 8、11、13 和 15 的构建版本。

详情

我们中很少有人编译过庞大而复杂的 OpenJDK 代码库。相反,我们会寻找提供构建和安装程序的多家供应商中的任何一家。

目前,我建议您使用 early-access build of Java 17 在 Apple Silicon Mac 上本机运行。选择 macOS / AArch64 项目。请报告您遇到的任何问题。

稍后,当 Java 17 于 2021-09 年正式发布时,我希望您可以选择来自多个供应商中的任何一个的构建/安装程序,例如 SAP、Red Hat/IBM、BellSoft、Azul Systems、Oracle、Adoptium/AdoptOpenJDK 、微软、亚马逊、Pivo​​tal 等。这些构建/安装程序将主要或完全基于 OpenJDK 代码库。

仅供参考,Java 17 预计将成为下一个 long-term support (LTS) 版本,支持多年。

我自己在我的 M1 MacBook Pro 上使用早期访问的 Java 17,在 Big Sur 上使用 IntelliJ 2021.x 和 Maven。运行良好,没有问题。

作为 commented,您的具体错误可能是由于您为 32 位 ARM 而不是 Apple 在其 M1 芯片中使用的 64 位 ARM 编译。

如果您坚持要尝试编译 OpenJDK,我建议您检查 Adoptium/AdoptOpenJDK 上的开源工具。在 OpenJDK 站点上构建早期访问版本的工具也可能是开源的,但我不确定。

答案 1 :(得分:0)

您可以在 Homebrew 的帮助下在 M1 MacBook 上构建 OpenJDK 11.0.10,运行:

brew install --build-from-source --verbose openjdk@11

Xcode 是先决条件,您可以从那里下载它 https://developer.apple.com/download/more/(需要 Apple ID)。

您可能还必须运行:

xcode-select --install
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

我已经对其进行了测试,它构建得非常完美。

如果您想构建最后一个版本(撰写本文时为 11.0.12),您必须将补丁 https://raw.githubusercontent.com/Homebrew/formula-patches/6e757d7b/openjdk%4011/aarch64.diff 调整到此版本。

如果你成功了,请做 PR。

== 更新 ==

已有 PR 但已关闭:https://github.com/Homebrew/homebrew-core/pull/81649