本文的参考自下列资料
深度理解JVM第三版
https://blog.csdn.net/cloud_xy/article/details/88623975
https://blog.csdn.net/xiao_cai_ming/article/details/109820102
https://blog.csdn.net/zhuchencn/article/details/105423189
https://www.jianshu.com/p/885c718df9de
https://blog.csdn.net/qq_33543634/article/details/121153063
https://blog.csdn.net/Dongguabai/article/details/106384400
环境:MacOS Monterey
准备
安装Xcode和command line tools;
mac安装openjdk11
下载openjdk11
https://download.java.net/java/ga/jdk11/openjdk-11_osx-x64_bin.tar.gz
自定义openjdk11存放的目录并解压
mkdir -p /mypath/JavaVirtualMachines && cd !$
tar xvf openjdk-11_osx-x64_bin.tar.gz
链接到标准目录中
cd /Library/Java/JavaVirtualMachines
sudo ln -shf /usr/local/custom/JavaVirtualMachines/jdk-11.jdk jdk-11.jdk
vi ~/.bash_profile 添加
JAVA_11_HOME=`/usr/libexec/java_home -v 11`
alias jdk11="export JAVA_HOME=$JAVA_11_HOME && echo current JDK has switched to openjdk version 11. && java -version"
在终端使用 jdk11
来切换java version
获取JDK源码
https://hg.openjdk.java.net/jdk/jdk12
解压到指定目录openjdk12
安装依赖
brew install ccache //加速编译
brew install freetype //字体引擎,编译过程中会被依赖到
brew install autoconf
cd openjdk12
sudo make images
结束流畅
但是……make命令执行会报错
原因:jdk12源码问题
JDK12源码错误修改
更改错误信息的这一行2873:85
buffer.insts()->initialize_shared_locs((relocInfo*)locs_buf, sizeof(locs_buf) / sizeof(relocInfo));
// 替换为
buffer.insts()->initialize_shared_locs((relocInfo*)locs_buf, (sizeof(locs_buf)) / sizeof((relocInfo)));
/Users/chenjun/MyStorage/InsideJVM/openJDK/src/hotspot/share/runtime/sharedRuntime.cpp:2873:109
buffer.insts()->initialize_shared_locs((relocInfo*)locs_buf, sizeof(locs_buf) / sizeof(relocInfo));
// 替换为
buffer.insts()->initialize_shared_locs((relocInfo*)locs_buf, (sizeof(locs_buf)) / (sizeof(relocInfo)));
Xcode13 兼容性问题
351行改为
#ifndef __APPLE__
上述以及其他错误都在下面两篇文章中找到
https://blog.csdn.net/qq_33543634/article/details/121153063
https://blog.csdn.net/xiao_cai_ming/article/details/109820102