1、boot JDK
如果你想编译JDK,首先自己本机必须提前已经安装有一个JDK,官方称之为bootstrap JDK(boot JDK),这个jdk是用来引导编译的。若想编译JDK 8,那本机须安装一个JDK 7,也就是比当前要编译的版本早一些的版本,最好就早一个版本号就行了。我的BootJDK版本为: jdk-7u80-linux-x64.tar.gz (环境变量要配置一下)
2、获取openjdk
方式一、通过Mercurial工具下载
Mercurial可以理解为和Git一样,是另外一种代码管理工具,安装好之后就有一个hg命令可用。而OpenJDK的源码已经提前托管到http://hg.openjdk.java.net/。因此,比如下载JDK 8,可直接hg clone一下就行,和git clone一样:
##安装mercurial
yum -y install mercurial
##拉取openjdk8的源码,这种方式拉取比较慢(可以选择下面第二种方案:从github上拉取)
hg clone http://hg.openjdk.java.net/jdk8/jdk8 openjdk8
方式二、直接下载打包好的源码包
下载地址:https://jdk.java.net/
选择你想要的版本下载
解压缩(我的版本:openjdk-8u40-src-b25-10_feb_2015.zip)
3、开始编译
#安装必要的工具集
yum install -y zip
yum groupinstall -y "Development Tools"
yum install -y libbXtst-devel libXt-devel libXrender-devel
yum install -y cups-devel
yum install -y alsa-lib-devel
yum install -y freetype-devel
##jdk是刚拉取的源码根目录
cd /usr/local/java/openjdk
##设置configure执行权限
chmod +x configure
##设置编译参数
export LANG=C
export USE_PRECOMPILED_HEADER=true
unset JAVA_HOME
unset CLASSPATH
unset JAVA_TOOL_OPTIONS
##configure检查(注意前导jdk7必须提前安装)
bash ./configure --with-target-bits=64 --with-boot-jdk=/usr/local/java/jdk1.7.0_80 --with-debug-level=slowdebug --enable-debug-symbols ZIP_DEBUGINFO_FILES=0
##检查无误,开始编译
make all CONF=linux-x86_64-normal-server-slowdebug ZIP_DEBUGINFO_FILES=0
编译成功如图所示(如果编译失败会自动退出):
检测下我们自己编译的jdk是不是真的成功了,进入到bin目录下,如下图:
执行 ./java -version,发现已经编译成功了!
4、问题处理
Error: time is more than 10 years from present: 138852720000
将下面的时间修改一下 我把他改成100年
5、参考
编译openjdk && 调试java_error: time is more than 10 years from present: 13-CSDN博客