源码准备
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里。
mkdir /usr/lib/jvm
tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/lib/jvm
然后设置环境变量
vim ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_202
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
使其生效
source ~/.bashrc
安装编译工具
apt-get install -y build-essential gdb cmake cpio file unzip zip wget ccache
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编译环境检查
chmod 777 configure
./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
如果报错了,报啥错就安装什么。
如果出现这个就代表可以编译
编译
make all DISABLE_HOTSPOT_OS_VERSION_CHECK=OK ZIP_DEBUGINFO_FILES=0
中间报了错 解决方案
https://cloud.tencent.com/developer/article/1671043
踩了一些坑。最终编译成功
build/linux-x86_64-normal-server-slowdebug/jdk/bin目录下
这里已经可以编译成功。于是我们使用codeql编译
这里要注意。先要把编译好的东西删掉再运行codeql,否则会报错
codeql database create Openjdk8u181_db --language="java" --command="make all DISABLE_HOTSPOT_OS_VERSION_CHECK=OK ZIP_DEBUGINFO_FILES=0"
创建成功后复制出来分析就可以了