java - 如何在 M1 Macbook 上编译 OpenJDK 11?
问题描述
我想为 M1 MacBook 编译 OpenJDK 11。
首先,我尝试使用 Zulu JDK,但我没有找到编译它的方法。
然后,我尝试在 M1 上编译 OpenJDK,但是当我运行sh configure
.
错误是:
配置:目标中测试的位数 (64) 与预期在目标中找到的位数 (32) 不同 配置:错误:无法继续。
那么,我该如何编译呢?
解决方案
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、Pivotal 等多家供应商的构建/安装程序。这些构建/安装程序将主要或完全基于 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 站点上构建早期访问版本的工具也可能是开源的,但我不确定。
推荐阅读
- ionic-framework - 当我尝试在 Ionic 4.1.1 中安装新应用程序时,为什么以前安装的应用程序会在 Android 中被卸载
- javascript - 如何合并子子数组并通过子数组索引添加它们的长度?
- sql - 如何在Oracle中找到外键的引用列?
- security - 如何在 Steam、PlayFab、GameSparks 或 HeroicLabs 中使用会话票证实现身份验证?
- spring-boot - 如何在 SpringBoot2 OAuth2-JWT 中实现注销功能
- reactjs - Firebase 有时不会更新值
- assembly - A-20 线如何克服 Wrapping 问题
- azure - 如何使用 Azure CLI 创建 SQL 表?
- python - python - 如何计算一个序列在python的给定字符串中出现的次数?
- ios - 类型“UITextField”没有成员“textDidBeginEditingNotification”