首页 > 其他分享 >苹果系统M系列芯片编译JDK18

苹果系统M系列芯片编译JDK18

时间:2023-07-19 11:13:47浏览次数:32  
标签:configure jdk JDK18 芯片 Xcode 编译 build 版本

苹果系统M系列芯片编译JDK18

Macos Apple Silicon Build openJDK

为什么编译

之前听blindpirate 大佬说过, 为了解决某个fastjson的bug编译了一下jdk让其报出更详细的异常信息.

最近在读<深入理解java虚拟机(第三版 周志明)>, 第一章就是使用ubuntu 18 编译个openjdk12, 以供接下来学习使用. 想着不如就凑此机会用macos编译个jdk吧, 便开始了此次旅程.

网络上没找到好的build openjdk的教程, 遂在此记录一下, 供朋友们少走弯路

我的电脑配置:

  • 型号: 2020款 13寸 macbookPro M1
  • OS: Macos 12.6.4

编译过程及使用

链接提供了主要的实操思路,感谢前辈!

openJDK仓库中有一个相应版本的build文档,介绍了build 的详细信息

最重要的是这篇文档 官方的build platforms wiki, 早看到他我能省一天的时间,也不至于走各种弯路. 进入链接后页面往下滑找到17&18部分, 可以获得的信息是官方使用系统版本是11.6.1, Xcode版本是13.1.

官方文档的意义是:用指定的OS版本和Xcode版本一定可以成功

你可以继续翻看该页面, 可以发现是从jdk17才支持 apple sillicon 的

我就走了弯路, 用了非指定xcode, build了17以下的版本, 想看弯路的请直接看文章下半部分

环境准备

  • OS: 与官方指定的最好,但现在还在用着11.X的系统的人不多了吧. 我的12.6.4编译成功啦,请放心使用.
  • Xcode: AppStore只能安装最新版本的, 就算下载到历史版本也只能让电脑存在一个Xcode且安装特别慢. 在此我推荐Xcodes, 操作简单 安装快 可让同时存在多版本Xcode
  • JDK17: 想编译X版本的jdk, 本地需要已安装X-1版本号的jdk. 我知道对某些朋友来说这不是常识,所以在此着重写出来

去Terminal中开始吧

# 下载jdk源码
git clone https://github.com/openjdk/jdk.git

cd jdk

# 切换到jdk18分支, 子版本可以认为是随便选的
git checkout jdk-18+32

# 从此分支上切出来一个新分支, 以备如果编译失败可以重来
git switch -c david-jdk-18

# 下方过程中会用到autoconf这个安装包, 提前安装
brew install autoconf

# 自动配置, 根据当前电脑生成相应的配置文件
bash configure

# (Optional) If you had previously cloned the code and executed a build you will want to first clean the project. Execute make clean.
# 如果需要的话, 请clean
[可选] make clean

# 开始编译! Wait for a long time
# 成功后当前文件夹下会生成的build文件夹, build/macos/images/jdk下,再往下就是jdk包那一大套东西啦
make images

# 验证是否成功, 就是调用一下java -version 命令
build/macosx-x86_64-server-release/images/jdk/bin/java -version

在idea中如何使用

指定项目的sdk为build/macosx-x86_64-server-release/images/jdk路径即可

如果不是指定环境会怎么样

没人教,没找到合适的教程, 就愣着头干, 装了弯路, 真羡慕看到此文章的你

遇到的错误很多,但当时只记录了几个, 希望能帮助到有其他需求的你

编译工具不用官方指定版本

我用Xcode14.0版本弄了一天,试了jdk-17分支、jdk-18别的分支,都报错啦

电脑上也有多个Xcode版本的话

解决方法:提供一个有效的 SDK 路径

bash configure
# 报错信息如下, 这个错误提示是由于 configure 脚本无法找到 Xcode
 configure: error: No xcodebuild tool and no system framework headers found, use --with-sysroot or --with-sdk-name to provide a path to a valid SDK
 
 # --with-sysroot 参数接受一个Xcode的路径
 # 我系统中安装的是Xcode-14.0.1.app,也可能是别的版本13.1.0
bash configure --with-sysroot=/Applications/Xcode-14.0.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk

编译不支持的Apple sillicon的jdk版本

会编译失败,但请不要去解决, 因为解决完这一个还有后面一堆问题要解决,不要问我是怎么知道的

在此记录一个pr, 给jdk修bug,编译过程中的错误,其实就是加了个空格

去哪联系我

该文章我会发送到几个主流平台上, 反哺中文社区对我的帮助, 但不会查看/回复各平台的评论/私信, 因为我知道这种文章响应者寥寥.

如果想看文章的后续更新 or 查看我的更多文章, 请访问我的博客

如有讨论疑问请去github repo 提issue.

标签:configure,jdk,JDK18,芯片,Xcode,编译,build,版本
From: https://www.cnblogs.com/lijilei/p/17564989.html

相关文章

  • nginx中编译安装的的模块介绍
    nginx中编译安装的的模块介绍./configure--prefix=/usr/local/nginx--with-http_dav_module--with-http_stub_status_module--with-http_addition_module--with-http_sub_module--with-http_flv_module--with-http_mp4_module--with-pcre--with-http_ssl_module--with-......
  • Golang的跨平台编译程序
    Golang支持交叉编译,也就是说你在32位平台的机器上开发,可以编译生成64位平台上的可执行程序。交叉编译依赖下面几个环境变量:$GOARCH  目标平台(编译后的目标平台)的处理器架构(386、amd64、arm)$GOOS     目标平台(编译后的目标平台)的操作系统(darwin、freebsd、linux、wind......
  • C语言多文件编译(vs.code)
    C语言多文件编译(vs.code)1.保证已经进行完第一步:配置C语言环境如果还未进行,建议来这里查看2.在扩展商店下载插件C/C++ProjectGeneratorCMakeCMakeTools3.修改settings.json也可以直接用快捷键ctrl+,搜索coderunner并找到ExecutorMap在settings.json中编辑找到......
  • CS5212/CS5202 DP转VGA芯片设计方案
    CS5212内置MCU控制器,超低待机功率<100uW,用于设计DP端口到VGA转换器,也可以用于主板DP转VGA方案,CS5212AN芯片功能特性:2-lane通道VESADP1.1兼容接收机VGA输出接口,DAC速度高达210MHz,8位分辨率高达1920x1200x60(RB,缩小消隐),24位色深,1920x1440x60(RB,缩小消隐),或2048x152x60(RB,缩小消隐......
  • ABS10-ASEMI迷你贴片整流桥50MIL芯片ABS10
    编辑:llABS10-ASEMI迷你贴片整流桥50MIL芯片ABS10型号:ABS10品牌:ASEMI芯片个数:4封装:MBS-4恢复时间:ns工作温度:-55°C~150°C浪涌电流:30A正向电流:1A反向耐压:1000V正向压降:1.05V引脚数量:4漏电流:>10uaABS10特性:ASEMI品牌ABS10是采用GPP工艺芯片,该芯片具有良好的稳定性及抗......
  • centos7中yum安装gcc编译器11
     001、系统信息[root@PC1software]#cat/etc/system-releaseCentOSLinuxrelease7.6.1810(Core) 002、当前gcc编译器版本[root@PC1software]#gcc--versiongcc(GCC)4.8.520150623(RedHat4.8.5-36)Copyright(C)2015FreeSoftwareFoundation,Inc.T......
  • Spring 6.x源码编译
    环境Windows10IntelliJIDEA2023.1.2(UltimateEdition)jdk-17.0.7Spring6要求jdk17+创建init.grade文件相当于maven的settings.xml,全局加速拉取依赖allprojects{repositories{mavenLocal()maven{url"https://maven.aliyun.com/reposit......
  • python:python解析器和pycharm编译器安装
    python解析器下载地址:https://www.python.org/getit/注意事项:1.建议下载3.6以以上的版本,2.官网下载比较慢,可以自行寻找其它网站下载,3.建议使用.exe安装包方式下载安装 下载完成后双击运行     验证是否安装成功:  pycharm编译器下载......
  • centos7中根据gcc编译器安装包升级gcc编译器
     001、系统信息[root@PC1home]#lsb_release-aLSBVersion::core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarchDistributorID:......
  • python使用ctypes调用gcc编译的dll之下载mingw
    1、打开下载mingw的下载链接https://sourceforge.net/projects/mingw-w64/files/或者使用镜像网站下载http://files.1f0.de/mingw/2、根据自己电脑系统的版本下载相应64位或32位的mingw,红框中的包下载解压之后配置环境变量就可以使用了 3、将解压的mingw的路径添加环境变......