根据《深刻理解Java虚拟机》一书,编译java虚拟机源码java
系统环境:centos7linux
编译jdk版本:jdk7u-devc++
本地java环境:jdk-7u40apache
ant版本为:1.8.2centos
1.安装相关依赖oracle
yum install freetype-devel
yum install alsa-lib-devel
yum install cups-devel
yum install libX*
yum install gcc gcc-c++
yum install libstdc++-staticui
ant手动安装centos7
wget https://archive.apache.org/dist/ant/binaries/apache-ant-1.8.2-bin.tar.gzspa
tar zxvf apache-ant-1.8.2-bin.tar.gz .net
ln -s /work/install/apache-ant-1.8.2/bin/ant /usr/bin/ant (应该是这步很重要)
本地java环境:jdk-7u40
下载地址:https://download.oracle.com/otn/java/jdk/7u40-b43/jdk-7u40-linux-x64.tar.gz
OpenJdk7源码获取:
yum install mercurial
hg clone http://hg.openjdk.java.net/jdk7u/jdk7u-dev
2.修改环境变量
vi /ect/profile
3.编写构建OpenJdk7脚本
[root@dev openjdk]# vi build.sh
export LANG=C
export ALT_BOOTDIR=/work/install/jdk1.7
export ALT_JDK_IMPORT_PATH=/work/install/jdk1.7
export ALLOW_DOWNLOADS=true
export HOTSPOT_BUILD_JOBS=1
export ANT_HOME=/work/install/apache-ant-1.8.2
export ANT_VERSION=1.8.2
export ALT_PARALLEL_COMPILE_JOBS=1
export SKIP_COMPARE_IMAGES=true
export USE_PRECOMPILED_HEADER=true
export BUILD_LANGTOOLS=true
#export BUILD_JAXP=false
export BUILD_JAXWS=false
#export BUILD_CORBA=false
export BUILD_HOTSPOT=true
export BUILD_JDK=true
export DISABLE_HOTSPOT_OS_VERSION_CHECK=ok
export SKIP_DEBUG_BUILD=false
export SKIP_FASTDEBUG_BUILD=true
export DEBUG_NAME=debug
BUILD_DEPLOY=false
BUILD_INSTALL=false
export ALT_OUTPUTDIR=/work/install/jdk1.7_build
unset JAVA_HOME
unset CLASSPATH
unset LD_LIBRARY_PATH
make sanity
make sanity && make 2>&1 | tee $ALT_OUTPUTDIR/build.log
4.最终经历千辛万苦OpenJdk7编译完成
坑1:本地尝试手动安装多个版本的ant,确认指定编译的ant版本无误。仍是报下图错误:
坑2:手动安装ant,make sanity验证不经过。网上说经过yum install ant,就ok。可是后续却报找不到Launcher主类错误。强制在环境变量中配置的该类路径仍然,没法生效。一直卡ant编译这个问题上,后续看到别人编译要创建ant软件,才最终解决该问题!!!ln -s /work/install/apache-ant-1.8.2/bin/ant /usr/bin/ant
找不到或没法加载主类 org.apache.tools.ant.launch.Launcher
坑3 使用centos 的ant版本1.7.1会报以下错误