假定从 http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot 签出了HotSpot VM的代码。那么在Mac OS X上,想单独build出HotSpot VM而不想build整个JDK8u的话,可以用我自用的这俩bash函数:
# HotSpot development on Mac
# Make just the HotSpot VM. Defaults to making a fastdebug variant.
makehs() {
local JHOME
JHOME=$JAVA_HOME
local BNAME
if [[ -n $1 ]]; then
BNAME=$1;
else
BNAME='all_fastdebug' # 'fastdebug_build'
fi
# use an existing JDK7 for the buld
JAVA_HOME='~/sdk/jdk7/Contents/Home'
# HS_CLANG_OPTS="CC=clang COMPILER_WARNINGS_FATAL=false LFLAGS='-Xlinker -lstdc++' USE_CLANG=true"
make -C make CC=clang COMPILER_WARNINGS_FATAL=false LFLAGS='-Xlinker -lstdc++' USE_CLANG=true LP64=1 LANG=C ALT_BOOTDIR=$JAVA_HOME ARCH_DATA_MODEL=64 HOTSPOT_BUILD_JOBS=8 $BNAME
JAVA_HOME=$JHOME
}
# Export the HotSpot build to the specified export JDK
exporths_fastdebug() {
EXPORT_JDK_PATH=~/sdk/jdk8u/Contents/Home/
cp -r `pwd`/build/bsd/export-universal/fastdebug/* $EXPORT_JDK_PATH
}
(注意:makehs()里JAVA_HOME请配置为任何一个Oracle JDK7或OpenJDK7的JDK安装路径;exporths_fastdebug()里EXPORT_JDK_PATH请配置为目标JDK的路径。我是把这俩函数放在我的.bash_profile里的,各位同学想怎么用都行。)
这俩都是很偷懒的脚本,就不多解释了。
在签出的hotspot目录里执行makehs可以默认构建出fastdebug版的HotSpot VM,其build结果在hotspot目录里的build/bsd/export-universal/fastdebug目录下。
然后,准备好一个事先build好的JDK8u的完整安装(例如说拿一个现成的Oracle JDK8u装好),并且把EXPORT_JDK_PATH变量配置到该JDK8u的安装路径上,然后在刚才build的hotspot目录里执行exporths_fastdebug()就会把刚build好的内容拷贝到目标JDK8u里,覆盖掉其中原本的HotSpot VM(主要是libjvm.dylib)。
完事之后那个目标JDK8u里的HotSpot VM就被狸猫换太子,变成我们自己build的版本了。然后就可以尽情实验啦。
以前我在Linux上做HotSpot VM的开发的时候,用的脚本也是类似的。根据Linux和Mac OS X的特点稍微调整一下就好了。
最后放俩我老blog的传送门:
原文作者:;如有侵权,请联系管理员删除。