搭建环境
- 远程 linux ubuntu server:用于编译 openjdk8 代码;
- 本地 mac 系统 + vscode + remote ssh 插件,用于阅读代码;
搭建过程
-
在 https://jdk.java.net/java-se-ri/8-MR3 下载启动 jdk,我这边下载的是 openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz。
-
上传启动 jdk 到 linux server 的 /opt 目录,并解压,得到
/opt/java-se-8u41-ri
。 -
在 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
- 在 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
- 编译 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。
-
vscode + remote ssh 连接到 linux server,按照 vscode 提示安装好各种插件;
-
在 .vscode 目录下配置好 c_cpp_properties.json,launch.json 和 tasks.json(已经在 git@github.com:Chandson/jdk8u.git 提前配置好了);
-
至此,就可以开始阅读和 debug openjdk8 源码了。