环境说明
操作系统: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