在Mac下自己编译出一个OpenJDK10
最近读到《深入理解Java虚拟机》这本书,这本书在第一章就讲到如何手动编译出一个JVM,所以本程序猿也想报着试一试的心里弄一个在执行java -version命令时显示自己名字的JVM,截个图可以在朋友圈里炫一波了😆
前提:本人是在Mac下编译的,Windows下未尝试,估计会比较麻烦。
环境准备
- 本人的系统版本是10.13.4。
- 下载源码,解压并将其放到没有中文的路径下。下载地址: https://download.java.net/openjdk/jdk10/ri/openjdk-10_src.zip
- 安装Xcode。本人系统中是安装的9.3。
- 准备一个JDK9。(因为OpenJDK的组成部分中有些是用Java自身实现的,因此在编译这些时需要用到一个可用的JDK,官方称之为"Bootstrap JDK")
- 安装brew。官方安装命令:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 安装FreeType. 命令: brew install freetype。本人安装的2.9版本,官方说是只要是2.3或以上的版本即可。
brew install freetype
- 安装Ccache。
brew install ccache
安装
- 进入解压后的openjdk文件夹中,执行命令: bash configure --with-boot-jdk=<此处填写你准备的JDK9的路径> --disable-warnings-as-errors --with-target-bits=64
bash configure --with-boot-jdk=/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home --disable-warnings-as-errors --with-target-bits=64
- 若出现如下文字,则表示环境OK,继续下面的步骤:
- 执行make images开始编译。 接下来,你的CPU将会爆满,入下图
-
出现以下文字则表示编译完成。
以下为编译出来的内容:
运行查看版本:大功告成!!!
世上无难事,只怕有心人
看似本人从下载源码开始到编译出可运行的JDK10都是一帆风顺,实则期间经历了几次JDK版本的切换。《深入理解Java虚拟机》这本书里面所讲的编译的是JDK7,但可能年代太久远,系统太新,编译的时候一直报错,而且报的是C++代码中的错,所以本人断定肯定是本机C/C++编译器版本太新,然后切换开始编译JDK8,但还是有同样的问题,便又切换到JDK9,问题依旧,好吧,那就再试试JDK10吧,果然,成功编译,只不过编译的过程中出现了很多的警告,不过这应该没什么影响。世上无难事,只怕有心人,从JDK7的编译文档看到JDK10的编译文档,最终编译成功。