一、简述
- 介绍:最近开始看《深入理解Java虚拟机第三版》,为了自己以后能方便回忆,以及加深理解,特写文章以记之。本篇博客主要是实现使用在 Ubuntu 系统上自己编译 OpenJdk,在后面的学习中会用到。
二、准备工作
- 安装 Ubuntu 操作系统:我是在 windows 系统上使用 VMware 安装了 Ubuntu 18.04.3 LTS 。这个安装就不介绍了,网上能搜到很多文章,此处贴一个博客地址是首次安装后,实现 root 用户登录以及 ssh 访问:解决Ubuntu18.04不能用Xshell使用root用户登录。我的虚拟机配置如下:
- 下载 OpenJdk12 源码:可以网上搜索,我就直接贴出我的百度云分享:https://pan.baidu.com/s/1Y12ba3RTzWxt8C9wvNcjPQ 提取码:xk6r
- 安装第三方库:编译过程中需要使用 GCC、FreeType、CUPS等,包括编译 OpenJdk 版本的上一个版本(因为源码有些是 Java 代码写的,需要 jdk 来编译),此处是安装 OpenJdk11。具体的安装内容如下
三、进行编译
- 上传 OpenJdk12 源码:下载得到的源码是 zip 包,可以通过 Xftp 等工具上传到 Ubuntu 系统上。因为要解压压缩包,因此需要安装 unzip 工具,同时需要安装 zip 工具(如果不安 zip ,在编译检查时会报缺失如下图)
安装命令如下:# 安装 apt-get install zip unzip # 解压文件 unzip xxxxx.zip
- 编译检查及配置:进入解压后的源码目录,如下图。
// 编译FastDebug版,仅含Server模式的HotSpot虚拟机 bash configure --enable-debug --with-jvm-variants=server
如果检查有缺失的项目,会进行提示,并给出解决安装的命令,只需要直接使用就行。我在检查时报了如下的缺失
此时按提示执行命令即可。当执行检查成功时,可以看到下图成功的显示
- 执行编译:此时我执行的是 “make all” 命令,即编译了 product、docs、test。此处的 make 有好几种选择可以自行查询。特别注意:如果多次编译,或者目录结构成功产生后又再次修改了配置,必须先使用 “make clean” 和 “make dist-clean” 命令清理目录,才能确保新的配置生效。# 编译 make all
该命令执行后大约要等 20 分钟左右,成功后如下图
- 验证:此时进入源码目录下的 build/OpenJdk配置名称/jdk ,可以看到编译完成后的 jdk 结果,此处的内容可以直接复制出来使用,就是一个完整的 jdk。目录如下图:
进入 bin 目录,执行如下的查看版本命令:./java -version
可以看到我们编译的 OpenJdk 版本信息
到此我们手动编译 OpenJdk 就完成了,后面文章将会介绍调试源码。