Ubuntu20.04编译debug版hotspot7
前言
HotSpot VM是Sun JDK和OpenJDK中所带的Java虚拟机,也是目前使用范围最广的Java虚拟机,其源代码开源且性能表现优异,得到了许多Java开发者的青睐,是研究Java虚拟机的不二之选。
今天我带大家完成hotspot debug版本的编译,所选hotspot为openjdk7中带的hotspot。
编译环境
- 操作系统:Ubuntu 20.04
- gcc 9.3.0
准备工作
-
安装Ant
-
下载Ant
wget https://mirrors.bfsu.edu.cn/apache//ant/binaries/apache-ant-1.9.15-bin.tar.gz
-
解压安装
tar xvf apache-ant-1.9.15-bin.tar.gz -C /opt/
解压完成后Ant就被安装在
/opt/apache-ant-1.9.15
下了。 -
配置环境变量
cat >> ~/.bashrc <<'EOF' export ANT_HOME=/opt/apache-ant-1.9.15 export PATH=$ANT_HOME/bin:$PATH EOF source ~/.bashrc
提示:如果你的shell环境是zsh,请将上述代码中的.bashrc替换为.zshrc。
-
-
安装BootstrapJDK
- 去Oracle官网下载jdk1.7,链接如下:
https://www.oracle.com/java/technologies/javase/javase7-archive-downloads.html
提示:选择文件
jdk-7u80-linux-x64.tar.gz
进行下载,下载过程需要登录!-
解压安装
tar xvf jdk-7u80-linux-x64.tar.gz -C /opt/
解压完成后JDK1.7就被安装在
/opt/jdk1.7.0_80
下了。 -
配置环境变量
cat >> ~/.bashrc <<EOF export JAVA_HOME=/opt/jdk1.7.0_80 export PATH=$JAVA_HOME/bin:$PATH EOF source ~/.bashrc
提示:如果你的shell环境是zsh,请将上述代码中的.bashrc替换为.zshrc。
-
配置编译环境
-
编译环境的配置比较简单,安装以下命令安装即可
sudo apt-get install build-essential gawk vim m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev binutils libmotif-common libmotif-dev sudo apt-get install libx11-dev libxt-dev libxext-dev libxtst-dev
-
-
下载openjdk7源码
-
下载openjdk源码前需要先安装Mercurial,使用以下命令进行安装:
sudo apt-get install mercurial
-
克隆openjdk7仓库
hg clone http://hg.openjdk.java.net/jdk7u/jdk7u
-
下载完整源码
openjdk的源码分为好几个模块,上面克隆下来是源码的整体架构,需要执行
get_source.sh
脚本获取完整源码:cd jdk7u bash get_source.sh
-
开始编译
-
修改hotspot的make规则,避免在编译过程中将警告当作错误处理,导致编译失败:
-
修改
jdk7u/hotspot/make/linux/makefiles/gcc.make
sed -i 's/WARNINGS_ARE_ERRORS = -Werror/# WARNINGS_ARE_ERRORS = -Werror/' jdk7u/hotspot/make/linux/makefiles/gcc.make
-
-
编写编译脚本
-
进入jdk7u中的hotspot目录,通过执行以下命令创建
build.sh
:cd hotspot cat > build.sh <<EOF #!/bin/bash export LANG=C export ALT_BOOTDIR="/opt/jdk1.7.0_80" export ALT_JDK_IMPORT_PATH="/opt/jdk1.7.0_80" export ANT_HOME="/opt/apache-ant-1.9.15" export HOTSPOT_BUILD_JOBS=4 export ARCH_DATA_MODEL=64 cd make make jvmg jvmg1 2>&1 EOF
-
-
执行编译命令
-
运行
build.sh
,编译hotspot:bash build.sh
编译结果存放在
hotspot/build/linux/linux_amd64_compiler2/jvmg
,可运行该目录下的test_gamma进行验证
。
下一篇文章中我们将针对jvmg下的调试脚本hotspot
进行讨论。
-