自己动手编译OPENJDK
自己编译JDK(macOS)
1. 获取JDK源码
2. 构建编译环境
3. 进行编译
#语言选项,这个必须要配置,否则编译后会出现一个Hashtable的NPE错误。
export LANG=C
#Bootstrap JDK的安装路径。
export ALT_BOOTDIR=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
#允许自动下载依赖
export ALLOW_DOWNLOAD=true
#并行编译的线程数,设置为和CPU内核数量一致即可,通过 关于本机-系统报告-核总数 可查看
export HOSTPOT_BUILD_JOBS=2
export ALT_PARALLEL_COMPILE_JOBS=2
#比较本次bulid出来的映像和之前版本的差异。这对我们第一次编译来说没有意义
#因此设置为true,否则sanity检查会报缺少先前版本JDK映像的错误提示
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 SKIP_DEBUG_BUILD=false
#export SKIP_FASTDEBUG=true
#export DEBUG_NAME=debug
#将它设置为fasle,可以避开javawa和浏览器Java插件之类的部分的build
BUILD_DEPLOY=false
#将它设置为false就不会build出安装包,因为安装包里面有奇怪的依赖
#但即使不build它也已经能得到完整的jdk映像了
BUILD_INSTALL=false
#编译结果存放的路径
export ALT_OUTPUTDIR=/Users/wangjun/Downloads
#这两个环境变量必须去掉,不然会有很诡异的事情发生
unset JAVA_HOME
unset CLASSPATH
#先执行make sanity,显示Sanity check passed.成功后再执行make 2>&1 | tee $ALT_OUTPUTDIR/build.log
#make sanity
#make 2>&1 | tee $ALT_OUTPUTDIR/build.log4. 可能遇到的错误以及解决办法
Last updated