环境准备和下载依赖
最近看了《深入理解java虚拟机 第3版》,要继续阅读下去,需要下载jdk源码并编译。
官方下载地址:,在书中也有提供,但是非常慢
这边笔者推荐百度云盘下载:,提取码:c6mn
书中推荐在macOS或者Linux系统上安装编译,由于笔者是macOS,所以其他系统编译不涉及。
- 系统:MacBook Pro 10.14.6
- 依赖:
安装xcode,并安装Command Line Tools, 用于编译openjdk中c/c++实现
安装ccache,加速编译,使用brew安装(国内会有网络慢问题,参考##遇到的问题)
安装freetype,尽量upgrade到最新的版本 - n-1版本的jdk,用于编译openjdk中java实现(这里n指将编译的openjdk版本),所以这里要下载jdk11,下载地址
编译命令
cd 到 openjdk12的目录,可以使用 bash configure –help 查看configure参数信息。
参数说明:
1 | --with-debug-level=slowdebug 启用slowdebug级别调试 |
有了以上的参数说明,我们可以使用以下命令验证当前的环境是否能编译成功:
1 | >>bash configure --with-debug-level=slowdebug --with-jvm-variants=server --enable-ccache --with-freetype=/usr/local/Cellar/freetype/2.10.1 --with-boot-jdk=/Users/.../Downloads/openjdk11/Contents/Home --disable-warnings-as-errors |
如果能编译成功,会返回如下结果:
1 | ==================================================== |
同一个目录下,执行以下命令编译:
1 | >>make images |
如果编译成功,会返回如下结果:
1 | ...... |
遇到的问题
1.brew install 时遇到网络很慢的问题,需要切源,这边推荐稳定的中科大源。参考
2.bash configure 验证时出现第一个错误:
1 | >>bash configure --with-debug-level=slowdebug --with-jvm-variants=server --enable-ccache --with-freetype=/usr/local/Cellar/freetype/2.9.1 --with-boot-jdk=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home --disable-warnings-as-errors |
需要将freetype分开成include和lib,即 –with-freetype=/usr/local/Cellar/freetype/2.9.1 修改成–with-freetype-include=/usr/local/Cellar/freetype/2.9.1/include –with-freetype-lib=/usr/local/Cellar/freetype/2.9.1/lib
参考
3.修改后 bash configure 验证时出现第二个错误:
1 | >>bash configure --with-debug-level=slowdebug --with-jvm-variants=server --enable-ccache --with-freetype-include=/usr/local/Cellar/freetype/2.9.1/include --with-freetype-lib=/usr/local/Cellar/freetype/2.9.1/lib --with-boot-jdk=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home --disable-warnings-as-errors |
需要注释 openjdk12目录/make/autoconf/lib-freetype.m4中的一段程序:
1 | ...... |