源码编译OpenJDK 15
Posted 氷泠之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了源码编译OpenJDK 15相关的知识,希望对你有一定的参考价值。
概述
本文主要讲述如何对OpenJDK15
进行源码编译操作以及进行简单的调试。
获取源码+BootJDK
可以使用如下命令检测下载文件的完整性:
echo "bb67cadee687d7b486583d03c9850342afea4593be4f436044d785fba9508fb7 openjdk-15+36_linux-x64_bin.tar.gz" | sha256sum --check
echo "d07bf62b4b20fa6bcd4c8fcd635e5df20b7c090af291675b2bd99f8cea8760a0 openjdk-15+36_src.zip" | sha256sum --check
另外需要准备一个BootJDK
,根据BootJDK
的规则:
建议使用当前版本号
/版本号-1
/版本号-2
的JDK
,这里选用的是OpenJDK 15
。
安装依赖库
笔者系统Manajro
,需要安装一些基础依赖:
paru -S base-devel
# 或
pacman -S base-devel
# 或
yay -S base-devel
如果依赖库安装不完整在配置阶段以及编译阶段会给出相应提示,再进行对应依赖安装即可。
编译
解压源码进入目录:
unzip openjdk-15+36_src.zip
tar -zxvf openjdk-15+36_linux-x64_bin.tar.gz
cd openjdk
配置:
bash configure --with-debug-level=slowdebug --with-jvm-variants=server --with-target-bits=64 --with-memory-size=8000 --disable-warnings-as-errors --with-native-debug-symbols=internal --with-boot-jdk=../jdk-15
参数说明:
-
--with-debug-level=slowdebug
:编译DEBUG
版本的JDK
,选项可以是slowdebug
/fastdebug
/release
/optimized
-
--with-jvm-variants=server
:构建server
变体的Hotspot
,选项可以是server
/client
/minimal
/core
/zero
/custom
-
--with-target-bits=64
:编译64位的JDK
,编译32位可以使用--with-target-bits=32
-
--with-memory-size=8000
:编译的计算机至少需要8G内存,这个可以根据个人需要调整 -
--disable-warnings-as-errors
:忽略警告的信息,注意该参数很重要,不加的话会显示配置成功但make
失败 -
--with-native-debug-symbols=internal
:生成symbol
文件,便于后续调试,选项可以是internal
/none
/external
/zipped
-
--with-boot-jdk
:BootJDK
的目录
结果:
配置后进行编译:
make images
这个阶段需要一点时间,而且会把CPU
拉满,好了之后会提示Finished building
:
笔者环境下编译出来的JDK
占了3G:
进入对应目录可以查看版本:
调试
调试需要gdb
,先安装好gdb
:
paru -S gdb
进入bin
目录(build/linux-x86_64-server-slowdebug/jdk/bin
),输入:
gdb -args ./java -version
在main
函数打断点:
(gdb) b main
再执行run
,可以看到会停在java.base/share/native/launcher/main.c
第98行:
(gdb) run
再次输入n
可进行单步调试:
(gdb) n
这样就算完成了基础的调试操作,为进一步学习JVM
准备好基本的环境。
以上是关于源码编译OpenJDK 15的主要内容,如果未能解决你的问题,请参考以下文章
HBase 源码 | ZGC 初体验-OpenJDK 15编译 HBase 1.4.8
HBase源码篇 | ZGC初体验——OpenJdk 15编译HBase 1.4.8