编译Open JDK源码

1.实验环境准备

操作系统:Ubuntu 18.04.1 LTS
编译JDK版本:OpenJDK12

1.1下载OpenJDK源码

前往官网自行下载
http://jdk.java.net/java-se-ri/12
进入页面后点击zip file下载对应源码压缩包
编译Open JDK源码
解压到任意目录
编译Open JDK源码

1.2下载安装gcc编译器

sudo apt-get install build-essential
验证安装:gcc –version,出现版本号说明验证成功

编译Open JDK源码

1.3 安装Bootstrap JDK

sudo apt-get install openjdk-11-jdk
假设要编译大版本号为N(这里是12)的JDK,我们还要另外准备一个大版本号至少为N-1的、已经编译好的JDK,这是因为OpenJDK由多个部分(HotSpot、JDK类库、JAXWS、JAXP……)构成,其中一部分(HotSpot)代码使用C、C++编写,而更多的代码则是使用Java语言来实现,因此编译这些Java代码就需要用到另一个编译期可用的JDK,官方称这个JDK为“Bootstrap JDK”。编译OpenJDK 12时,Bootstrap JDK必须使用JDK 11及之后的版本。

1.4 安装依赖库

工具 库名称 安装命令
FreeType The freeType Project sudo apt-get install libfreetype6-dev
CUPS Common UNIX Printing System sudo apt-get install libcups2-dev
X11 X Windows System sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev
AlSA Advanced Linux sound Architecture sudo apt-get install libasound2-dev
libffi Portable Foreign Function Interface Library sudo apt-get install libffi-dev
AutoConf Extensible Package of M4 Macros sudo apt-get install autoconf

2.进行自动配置

进入jdk源码根目录执行命令:bash configure
configure命令承担了依赖项检查、参数配置和构建输出目录结构等多项职责,如果编译过程中需要的工具链或者依赖项有缺失,命令执行后将会得到明确的提示,并且给出该依赖的安装命令,我们只需根据提示再安装对应依赖即可。

3.开始进行全量编译

执行命令:make all
使用4核8G配置全量编译整个OpenJDK 12大概需近15分钟时间。
编译Open JDK源码
出现finished building代表编译完成,此时在“build/配置名称/jdk“目录下就可以看到完整的编译结果。

4.验证

进入jdk目录执行:./java -version
编译Open JDK源码