自己编译JDK

环境说明

操作系统:CentOS 6.8

OpenJDK:openjdk7u

BootstrapJDK:jdk1.7

安装Bootstrap JDK(如果需要的话,但是测试时尽量不用1.8)

因为OpenJDK各个组成部分有的是C、C++编写的,但更多的是Java自身实现的,所以需要一个Oracle JDK官方称这是''Bootstrap JDK''

1、Oracle官网下载Linux版本的JDK

2、Linux、Windows共享文件将JDK放到Linux的usr/java文件下(先mkdir java)

3、tar -zxvf  /usr/java/jdk-8u131-linux-x64.tar.gz解压缩jar包

4、设置Linux的环境变量

  export JAVA_HOME=/usr/java/jdk1.8.0_131

  export CLASSPATH=.:/usr/java/jdk1.8.0_131/jre/lib/rt.jar

  export PATH=$PATH:/usr/java/jdk1.8.0_131/bin

5、java -version验证是否安装成功

获取OpenJDK源码

方式一:通过Mercurial代码管理工具从Repositroy中获得   

yum install -y mercurial
hg clone http://hg.openjdk.java.net/jdk7u/jdk7u-dev cd jdk7u-dev chmod 755 get_source.sh ./get_source.sh

方式二:直接下载官方打包好的源码 到本地直接解压即可,地址http://jdk7.java.net/source.html

构建编译环境

OpenJDK包括虚拟机Hotsport、JDK API、JAXWS、JAXP等。需要各种编译依赖,包括C++,C的编译环境,编译Java的Bootstrap JDK,还有用于执行java代码的Ant脚本等。

yum install build-essential gawk m4 libasound2-dev libcups-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant

还应添加

yum install -y ant*
yum install -y libX11* libX* yum install -y libXi-devel libXtst-devel libXt-devel freetype* yum install -y alsa-lib-devel cups-devel

设置环境变量

必须设置的有两个变量LNAG、ALT_BOOTDIR

# 设定语言选项否则抛异常
export LANG=C

# 设置Bootstrap JDK的安装路径灵活调整
export ALT_BOOTDIR=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.151.x86_64

# 允许自动下载依赖
export ALLOW_DOWNLOADS=true

# 并行编译的线数,设置和cpu的数量一致即可
export HOTSPOT_BUILD_JOBS=4
export ALT_PATALLER_COMPILE_JOBS=4

export SKIP_COMPARE_IMAGES=true

# 使用预编译头文件,不加这个编译会更慢一些
export USE_PRECOMPILED_HEADER=true

# 要编译的内容
export BUILD_LANGTOOLS=true
export BUILD_HOTSPOT=true
export BUILD_JDK=true

# 把它设置为false可以避开javaws和浏览器Java插件之类的部分的build
BUILD_DEPLOY=false
BUILD_INSTALL=false

# 编译结果所存放的路径
export ALT_OUTPUTDIR=/usr/java/openjdk/jdk7u-dev/build

# 这两个环境变量需要去掉
unset JAVA_HOME
unset CLASSPATH

使用 make sanity 检查设置是否正确,如果正确返回Sanity check passed

 编译OpenJDK

开始编译

  在openjdk目录下,输入make命令

检查编译结果

  进入OpenJDK源码下的build/j2sdk-image目录这是整个jdk完整编译结果,复制到JAVA_HOME下就可以作为一个完整的jdk使用。 

cd /usr/java/openjdk/jdk7u-dev/build/j2sdk-image
export JAVA_HOME=/usr/java/openjdk/jdk7u-dev/build/j2sdk-image
export PATH=$PATH:$JAVA_HOME/bin
java -version

启动虚拟机

手动编辑env.sh增加一个变量

LD_LIBRARY_PATH=.:${JAVA_HOME}/jre/lib/amd64/native_threads:${JAVA_HOME}/jre/lib/amd64:
export LD_LIBRARY_PATH

使生效env.sh

source ./env.sh
./gamma -version

 可参考http://blog.csdn.net/u013190088/article/details/71703255

原文地址:https://www.cnblogs.com/BINGJJFLY/p/7601719.html