根據《深刻理解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會報以下錯誤