转载

初次编译openJDK8

最近开始看《深入理解Java虚拟机》这一本书,这本书出版的时候Oracle还没有推出JDK8,但是作者在1.5章节中对JDK发展的预测,还是很准确的,就像他函数式编程,模块化等,当时看到这里的时候就挺佩服作者的高瞻远瞩的,这几点基本上都预测到了,看到这里也让我对这本书有了更多的兴趣。

第一章的最后就是自己动手编译OpenJDK,JDK7还是比较久远了,直接来JDK8吧。

介绍一下环境

  • 系统是 centos7
  • Bootstrap JDK 1.8
  • OpenJDK 1.8

因为是头一次编译openjdk,所以选择自己的服务器作为环境。之前我在这台服务器上已经安装过了JDK8,正好就可以用来做我的BootStrap jdk了。 (linux安装jdk8就不介绍了。)

BootStrap JDK是openjdk的执行jdk,因为openjdk是用java写的,java需要一个环境来运行。

之前使用

hg clone hg.openjdk.java.net/jdk8u/jdk8u jdk8u

这条命令去下载openjdk,但是后来查了一下 openjdk的目录结构,发现我下的这个跟网上的不一样,于是又换了一个。地址是:

pan.baidu.com/s/1dKrYOlx6… 密码: r653

正确的目录结构如下图:

初次编译openJDK8

那么下面去安装所需要的东西。

安装alsa包

yum install alsa-lib-devel

安装cups-devel

yum install cups-devel

安装X相关的库

yum install libX* yum install xrender

安装g++

yum install gcc gcc-c++

安装freetype

yum install freetype

安装ant

yum install ant yum install ccache

安装好后设置环境变量

export JAVA_HOME=/usr/local/java/jdk1.8.0_161

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin


export LANG=C
unset JAVA_HOME
unset CLASSPATH

export ALT_BOOTDIR=/usr/local/java/jdk1.8.0_161
export ANT_HOME=/usr/bin/ant
export ALLOW_DOWNLOADS=true
export USE_PRECOMPILED_HEADER=true
export ARCH_DATA_MODEL=64
export HOTSPOT_BUILD_JOB=6
export ALT_PARALLEL_COMPILE_JOBS=6
export SKIP_DEBUG_BUILD=false
export SKIP_FASTDEBUG_BUILD=true
export DEBUG_NAME=debug
复制代码

这是我自己的环境变量。

然后执行configure文件

chmod +x configure ./configure

接着编译

make

第一次编译的时候是用了hg下来的包,怎么编译都不对,到最后都是报错。于是乎换了上面链接里的jdk,第一次编译也是有问题,但是第二次就好了。附图如下。 evernotecid://C6FAA89E-4A5B-44D0-A821-BA0101E2FCEC/appyinxiangcom/11444250/ENResource/p176

初次编译openJDK8

那么怎么看是真的编译好了呢? 用java -version 这个命令,并且跟sun jdk对比一下就知道了。 sun jdk: evernotecid://C6FAA89E-4A5B-44D0-A821-BA0101E2FCEC/appyinxiangcom/11444250/ENResource/p174

初次编译openJDK8

open jdk: evernotecid://C6FAA89E-4A5B-44D0-A821-BA0101E2FCEC/appyinxiangcom/11444250/ENResource/p175

初次编译openJDK8

openJDK到这里就编译好了,它的好处就是可以查看全部的源码,甚至可以添加断点去运行,更方便了我们研究JVM原理。

参考:

https://www.cnblogs.com/mr-long/p/5841604.html
  https://www.jianshu.com/p/5db1131b3038复制代码
原文  https://juejin.im/post/5d81a02cf265da03ae78ab3b
正文到此结束
Loading...