0%

openjdk8 代码阅读环境搭建

搭建环境

  • 远程 linux ubuntu server:用于编译 openjdk8 代码;
  • 本地 mac 系统 + vscode + remote ssh 插件,用于阅读代码;

搭建过程

  1. https://jdk.java.net/java-se-ri/8-MR3 下载启动 jdk,我这边下载的是 openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz。

  2. 上传启动 jdk 到 linux server 的 /opt 目录,并解压,得到 /opt/java-se-8u41-ri

  3. 在 linux server 上执行下面的命令

apt update && apt install -y openssh-server && apt install -y vim && apt install -y git && apt install -y wget && \
apt install -y \
        libx11-dev \
        libxext-dev \
        libxrender-dev \
        libxtst-dev \
        libxt-dev \
        libcups2-dev \
        libfreetype6-dev \
        libasound2-dev \
        libfontconfig1-dev \
        cpio \
        unzip \
        zip \
        ccache \
        cmake \
        gdb \
        rsync \
        gcc-4.8 \
        g++-4.8 \
        ant \
        net-tools \
        bear
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
  1. 在 linux server 上 git clone openjdk8 源码,社区的 git 项目是
git@github.com:openjdk/jdk8u.git

而我已经提前 fork 好了项目,操作如下

mkdir -p /Users/bytedance/infra/git
cd /Users/bytedance/infra/git
git clone git@github.com:Chandson/jdk8u.git
git checkout Chandson-dev
  1. 编译 openjdk8 代码
cd /Users/bytedance/infra/git/jdk8u
bash ./configure --with-target-bits=64 --with-boot-jdk=/opt/java-se-8u41-ri --with-debug-level=slowdebug --enable-debug-symbols ZIP_DEBUGINFO_FILES=0
bear make all ZIP_DEBUGINFO_FILES=0

其中,bear 命令用于生成 compile_commands.json 文件。编译时间可能在 20s 到 20min 之间。我自己在本地 mac 系统(16GB 内存)编译花了 20 多 min,在 linux server 上(256GB 内存)编译只花了 20 多 s。

  1. vscode + remote ssh 连接到 linux server,按照 vscode 提示安装好各种插件;

  2. 在 .vscode 目录下配置好 c_cpp_properties.json,launch.json 和 tasks.json(已经在 git@github.com:Chandson/jdk8u.git 提前配置好了);

  3. 至此,就可以开始阅读和 debug openjdk8 源码了。