源码准备

https://github.com/openjdk/jdk8u/releases/tag/jdk8u181-b00

https://zhuanlan.zhihu.com/p/475499290

准备Boot jdk

首先下载Boot JDK。(这个JDK不是我们要分析的)这里需要手动装一下。

https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html

下载解压到ubuntu里。

  1. mkdir /usr/lib/jvm
  2. tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/lib/jvm

然后设置环境变量

  1. vim ~/.bashrc
  2. export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_202
  3. export JRE_HOME=${JAVA_HOME}/jre
  4. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
  5. export PATH=${JAVA_HOME}/bin:$PATH
  6. 使其生效
  7. source ~/.bashrc

安装编译工具

  1. apt-get install -y build-essential gdb cmake cpio file unzip zip wget ccache
  2. apt-get install -y --no-install-recommends libfontconfig1-dev libfreetype6-dev libcups2-dev libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev libasound2-dev libffi-dev autoconf

OpenJDK编译环境检查

  1. chmod 777 configure
  2. ./configure --with-target-bits=64 --with-boot-jdk=/usr/lib/jvm/jdk1.8.0_202 --with-debug-level=slowdebug --enable-debug-symbols ZIP_DEBUGINFO_FILES=0

如果报错了,报啥错就安装什么。

如果出现这个就代表可以编译对openjdk挖掘 - 图1

编译

  1. make all DISABLE_HOTSPOT_OS_VERSION_CHECK=OK ZIP_DEBUGINFO_FILES=0

中间报了错 解决方案

https://cloud.tencent.com/developer/article/1671043

踩了一些坑。最终编译成功

对openjdk挖掘 - 图2

  1. build/linux-x86_64-normal-server-slowdebug/jdk/bin目录下

对openjdk挖掘 - 图3

这里已经可以编译成功。于是我们使用codeql编译

这里要注意。先要把编译好的东西删掉再运行codeql,否则会报错

  1. codeql database create Openjdk8u181_db --language="java" --command="make all DISABLE_HOTSPOT_OS_VERSION_CHECK=OK ZIP_DEBUGINFO_FILES=0"

对openjdk挖掘 - 图4

创建成功后复制出来分析就可以了