- 最近在看《HotSpot实战》,学习JVM,按照书中的介绍,只需要编译openjdk中的hotspot子项目,由于其子项目过多,没必要都编译。
1、使用到的软件
- ubuntu-14.04.5-desktop-i386.iso
- apache-ant-1.9.0-bin.zip
- jdk-7u7-linux-i586.tar.gz
- openjdk-7u40-fcs-src-b43-26_aug_2013.zip
2、下载依赖
- sudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant libxt-dev libxtst-dev
3、安装jdk、ant
4、创建脚本文件make.sh
进入openjdk/hotspot目录下,创建脚本文件并授予权限:chmod u+x make.sh
- #设置语言
- export LANG=C
- export ALT_BOOTDIR=/usr/java/jdk1.7.0_07
- #允许自动下载依赖包
- export ALLOW_DOWNLOADS=true
- #并行编译的线程数,设置为和cpu内核数量一直即可
- export HOTSPOT_BUILD_JOBS=6
- export ALT_PARALLEL_COMPILE_JOBS=6
- #使用预编译头文件,不加这个编译会更慢
- export USE_PRECOMPILED_HEADER=true
- #要编译的内容
- #export BUILD_LANGTOOLS=true
- #export BUILD_JAXP=true
- #export BUILD_JAXWS=true
- #export BUILD_CORBA=true
- #export BUILD_HOSTPOT=true
- #export BUILD_JDK=true
- #要编译的版本
- export SKIP_DEBUG_BUILD=false
- export SKIP_FASTDEBUG_BUILD=true
- export DEBUG_NAME=debug
- #把它设置为FALSE可以避免javaws和浏览器Java插件之类的部分build
- BUILD_DEPLOY=false
- #把它设置为false就不会build出安装包。因为安装包里有一些奇怪的依赖
- #但即便不build出它也已经得到完整的JDK镜像,所以还是不用build它
- BUILD_INSTALL=false
- #存放编译结果
- export ALT_OUTPUTDIR=/usr/java/openjdk1.7/build
- unset CLASSPATH
- unset JAVA_HOME
- #make sanity && make
- #"DEBUG_BINARIES=true"解决高版本的gcc不再支持编译选项stabs的问题
- #DEBUG_BINARIES=true make 2>&1 | tee $ALT_OUTPUTDIR/build.log
- cd make
- DEBUG_BINARIES=true make jvmg jvmg1 2>&1 | tee $ALT_OUTPUTDIR/build.log
安装过程会遇到一些问题,可参考以下文章:
http://www.jackieathome.net/archives/395.html
http://blog.csdn.net/my_computer/article/details/37879469
http://www.cnblogs.com/dreamingodd/p/5827899.html
http://www.cnblogs.com/zxfdream/p/5411511.html