摘要

大家平时用的JDK都是orcal官网等进行编译好了。但是有同学在公司做开发时候或者是自学习的时候需要对源码进行操作,甚至对JDK做定制化的开发的时候,就需要我们自己进行源码进行重新编译。因此博文将详细介绍JDK8源码自编译的流程,给大家一个学习和参考的方法。

一、linux系统安装所需的依赖

yum install alsa-lib-devel cups-devel libX* gcc gcc-c++ freetype-devel libstdc++-static ant make 
yum install clang -y
yum install clang++ -y
yum install autoconf -y
yum install freetype freetype-config -y

 检查依赖是否安装成功:

 二、安装一个jdk作为bootstrap jdk

你要编译openjdk8 那么电脑上至少都要装一个jdk7,下图是我电脑上配置的jdk,配置流程跟在Linux上配置jdk一样的

三、下载openjdk源码

Java Platform, Standard Edition 8 ReferenceImplementations

四、自动配置

解压下载好的源码包之后,进入解压后的源码包(下图为目录结构),输入 sh configure 进行自动配置(默认没有build目录,这是编译成功后生成的)

五、进行编译

第一次编译输入make all (全量编译)指令,等待时间比较久,耐心等待

进入build目录在进入生成的 linux-x86_64-normal-server-release目录

这里面的images目录是编译生成的jdk成品镜像, 

六、源码编译结果测试

修改好自己的代码后进行 make images(增量编译) 就能完成源码的修改并生效。PS:给虚拟机的内存要大,不然打开idea执行编译是内存会不够用,或者把idea关闭之后执行编译

特别提示:注意的是此JDK源码是在linux下进行编译的,因此生成的SDK的包只能在linux下能运行成功。如果将这个SDK导入woidow将不会起作用。

有朋友就会问,我平时码代码的时候都是在window工作的,你用Unix内核的系统给我编译出来的玩意能在window上运行么?回答肯定是不行的,还记得java为什么能跨平台么?没错不是java能跨平台,而是JVM的实现是居于不同平台的,那就意味着,不同平台编译出来的JDK只能在对应平台上运行,JVM根据不同平台翻译为对应的机器码,JVM才是java能跨平台的基石;那么window平台的码友就不好意思了,只能自己尝试在window上编译。

博文参考

JDK---00Linux上编译openjdk8 - Jenne - 博客园

Ubuntu14.04LTS编译JDK1.8 - _小妖 - 博客园

Linux下编译OpenJDK源码 - 简书

Java Platform, Standard Edition 8 ReferenceImplementations

更多推荐

JDK源码——JDK8源码编译全流程(linux)