首页 > 解决方案 > 如何在 M1 Macbook 上编译 OpenJDK 11?

问题描述

我想为 M1 MacBook 编译 OpenJDK 11。

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

然后,我尝试在 M1 上编译 OpenJDK,但是当我运行sh configure.

错误是:

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

那么,我该如何编译呢?

标签: javajava-11openjdk-11

解决方案


tl;博士

我想在 M1 MacBook 中编译 jdk。

不要尝试编译 OpenJDK。代码库庞大而复杂。不需要,因为其他人提供二进制文件和安装程序。

对于使用Apple Silicon而不是Intel x86-64的 Mac,我建议从多家供应商处获取 2021 年 9月发布的适用于macOS / AArch64的 Java 17发行版。

或者,使用由不同供应商移植到 Apple Silicon 的早期 Java 版本的构建。例如,Azul Systems宣布 2020-11计划为基于ARM的Apple Silicon的Mac 提供 OpenJDK 8 和 11 版本。我看到该公司现在可以在英特尔 Mac 和 Apple Silicon Mac 上下载Java 11.0.13+8 。

细节

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

Java 17于 2021 年 9 月发布。OpenJDK 在 Apple Silicon 上正式支持 macOS:JEP 391: macOS/AArch64 Port。您可以选择来自 SAP、Red Hat/IBM、BellSoft、Azul Systems、Oracle、Adoptium/AdoptOpenJDK、Microsoft、Amazon、Pivo​​tal 等多家供应商的构建/安装程序。这些构建/安装程序将主要或完全基于 OpenJDK 代码库。

仅供参考,Java 17 是最新的长期支持 (LTS)版本,将支持多年。

我自己首先在我的M1 MacBook Pro上使用早期访问 Java 17,现在是官方 Java 17 版本,在Big Sur上使用IntelliJ 2021.x 和Maven。运行良好,没有问题。Java 18 Early Access现在可用于 Intel Mac 和 Apple Silicon Mac。

正如所评论的,您的具体错误可能是由于您为32 位 ARM而不是Apple 为其M1 芯片使用的64 位 ARM进行编译。

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


推荐阅读