Ubuntu20.04编译debug版hotspot7

Ubuntu20.04编译debug版hotspot7

前言

HotSpot VM是Sun JDK和OpenJDK中所带的Java虚拟机,也是目前使用范围最广的Java虚拟机,其源代码开源且性能表现优异,得到了许多Java开发者的青睐,是研究Java虚拟机的不二之选。

今天我带大家完成hotspot debug版本的编译,所选hotspot为openjdk7中带的hotspot。

编译环境
  1. 操作系统:Ubuntu 20.04
  2. gcc 9.3.0
准备工作
  1. 安装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。

  2. 安装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。

  3. 配置编译环境

    • 编译环境的配置比较简单,安装以下命令安装即可

      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
      
  4. 下载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
      
开始编译
  1. 修改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
      
  2. 编写编译脚本

    • 进入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
      
  3. 执行编译命令

    • 运行build.sh,编译hotspot:

      bash build.sh
      

      编译结果存放在hotspot/build/linux/linux_amd64_compiler2/jvmg,可运行该目录下的test_gamma进行验证
      下一篇文章中我们将针对jvmg下的调试脚本hotspot进行讨论。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值