简短总结
目标(64位)与目标(32位)的位数不同
Apple Silicon芯片适用于macOS(M1,M2),都是64位架构。不要编译成32位。
我想在M1 MacBook上编译jdk。
不要尝试编译OpenJDK。代码库庞大且复杂。而且没有必要,因为其他人提供了二进制文件和安装程序。
对于使用
Apple Silicon而不是
Intel x86-64的Mac,我建议从几个供应商中获取适用于
macOS / AArch64的Java 17发行版,发布于2021年9月。
或者,使用由各个供应商移植到Apple Silicon的早期Java版本的构建。例如,Azul Systems在2020年11月宣布计划为基于ARM的Mac提供OpenJDK 8和11的构建版本。我看到该公司现在提供了适用于Intel Mac和Apple Silicon Mac的Java 11.0.13+8的下载。
详情
我们很少编译OpenJDK这样庞大而复杂的代码库。相反,我们寻求提供构建和安装程序的几个供应商之一。如果您的目标是在Java编程中提高生产力,那么编译Java JDK工具集并不是您时间的最佳利用方式。
Java 17在2021年9月发布。OpenJDK正式支持苹果芯片上的macOS:JEP 391: macOS/AArch64 Port。您可以从多个供应商选择构建程序/安装程序,例如SAP、Red Hat/IBM、BellSoft、Azul Systems、Oracle、Adoptium/AdoptOpenJDK、Microsoft、Amazon、Pivotal等。这些构建程序/安装程序将主要或完全基于OpenJDK代码库。
像Azul Systems这样的供应商为当前版本19以及长期支持(LTS)版本8、11和17提供了适用于苹果芯片的构建程序。Java 17是最新的LTS版本,将在未来多年得到支持。因此,我建议部署Java 17。
我自己一直在几台M1 MacBook Pro笔记本上使用Java 17、18和19,以及早期访问的20版本,配合IntelliJ和Maven在Big Sur和Monterey上运行良好,没有问题。
更新:截至2023年11月,我建议使用最新的LTS版本21进行部署。此外,现在你可以从许多供应商(包括亚马逊、微软、Azul Systems、BellSoft、Oracle、Adoptium、SAP、IBM、Red Hat、Linux apt-get、FreeBSD Ports和Packages等)获取JDK二进制文件和安装程序。其中大多数供应商都提供适用于Intel Mac和Apple Silicon Mac的JDK产品版本。
编译Java
正如所评论的,你遇到的具体错误很可能是因为你在编译时选择了32位ARM而不是苹果的M1芯片和M2芯片系列所使用的64位ARM架构。
如果你对从OpenJDK代码库编译Java感兴趣,或者有学术兴趣,我建议你查看Adoptium(前身为AdoptOpenJDK)的开源工具。OpenJDK网站上用于构建早期访问版本的工具可能也是开源的,但我不能确定。