编译OpenJDK12
目录
- 编译OpenJDK12
- 前言
- 一、下载OpenJDK源码
- 二、编译OpenJDK
- 参考https://openjdk.org/groups/build/doc/building.html
- 1:安装编译所需的组件
- 2:执行编译命令
- 3:验证编译结果
- 三、在Clion中调试OpenJDK源码
- 1:Clion中配置信息
- 2:运行Debug进行调试
- 2:去除调试sigsegv segmentation fault问题
前言
学习《深入理解Java虚拟机:JVM高级特性与最佳实践(第三版)》,先编译一个OpenJDK12。
本人使用了WSL进行JDK编译,然后在CLion中调试。下方是各工具版本信息。
文章有些内容不是特别详细,尝试编译前请认真阅读书籍和相关资料。
一、下载OpenJDK源码
# 1:访问https://hg.openjdk.java.net/jdk/jdk12/
# 2:点击“browse”
# 3:点击“zip”,即可下载到本地
二、编译OpenJDK
参考https://openjdk.org/groups/build/doc/building.html
1:安装编译所需的组件
提示,遇到下载安装慢可以将安装源更换为国内源
参考链接中External Library Requirements章节。
2:执行编译命令
# 我使用到的命令[进入到解压后的源码中执行]
1. bash configure --enable-debug --with-jvm-variants=server
# 执行完之后可能会有报错,根据提示信息安装缺少的组件即可。
2. make images
# 前言中的硬件配置编译时长15分钟,执行过程可可能会报错,我在编译时的报错原因是gcc版本太高引起的,重新安装了gcc7,可作参考
3:验证编译结果
# 第二条命令正常执行后,可以用第三条命令验证结果,出现OpenJDK提示则表示正常。
3. ./build/*/images/jdk/bin/java -version
三、在Clion中调试OpenJDK源码
1:Clion中配置信息
提示,配置中所有的目录都选wsl的相对地址,不选驱动盘符下的绝对地址
2:运行Debug进行调试
根据第一步的配置信息都添加好之后,就可以进行Debug了,找到src/java.base/share/native/libjli/java.c文件,进入JavaMain方法,打断点,开始执行。
2:去除调试sigsegv segmentation fault问题
# 编辑.gdbinit文件
vim ~/.gdbinit
# 写入内容后:wq保存
handle SIGSEGV nostop noprint pass
handle SIGBUS nostop noprint pass
handle SIGFPE nostop noprint pass
handle SIGPIPE nostop noprint pass
handle SIGILL nostop noprint pass
# Clion中重新编译就不会出现sigsegv segmentation fault。