深入理解JVM(一)编译openJDK
此文总结的很不错:https://www.cnblogs.com/ACFLOOD/p/5528035.html
-
准备openJDK源码和环境
1.在linux和macOS上编译openJDK更加友好,我是在linux上编译的;
2.编译jdk有利于理解jvm的运行过程,下载openJDK:https://my.oschina.net/u/2518341/blog/1931088
3.编译openJDK的过程也需要jdk,我编译的是openJDK 1.7,jdk我也是用的1.7;
4.编译所需要的linux环境安装:
sudo yum install build-essential gawk m4 libasound2-dev libcups-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant
5.配置环境变量:vim /etc/profile
#语言选择,必须配置
export LANG=C
#编译过程所依赖的jdk
export ALT_BOOTDIR=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.191-2.6.15.4.el7_5.x86_64
#允许自动下载依赖
export ALLOW_DOWNLOADS=true
#并行编译的线程数
#export HOTSPOT_BUILD_JOBS=6
#export ALT_PARALLEL_COMPILE=6
#使用预编译头文件,编译更快
export USE_PRECOMPILED_HEADER=true
#要编译的内容
export BUILD_LANGTOOLS=true
#export BUILD_JAXP=false
#export BUILD_JAWS=false
#export BUILD_CORBA=false
export BUILD_HOTSPOT=true
export BUILD_JDK=true
#避免Javaws和Java插件之类的build
BUILD_DEPLOY=false
#避免build出安装包
BUILD_INSTALL=false
#编译结果的路径
export ALT_OUTPUTDIR=/usr/local/openjdk/jdk-9b8c96f96a0f/build
#另外,这两个必须配置上
unset JAVA_HOME
unset CLASSPATH
配置好之后输入make sanity来检验是否正确
-
编译
输入"make"指令,需要一定的时间,最终编译出的源码在上面配置的ALT_OUTPUTDIR中。