-
深入理解Java虚拟机之自己编译JDK
- 网站名称:深入理解Java虚拟机之自己编译JDK
- 网站分类:技术文章
- 收录时间:2025-10-08 14:06
- 网站地址:
“深入理解Java虚拟机之自己编译JDK” 网站介绍
题外话
最近在阅读《深入理解Java虚拟机》,其中有一小节实战是自己编译JDK,实际操作下来后遇到问题不少,为此特地记录,也希望可以给大家带来一些参考!
前置准备
平台及工具: Windows 10 + WSL(ubuntu 20.04) + CLion(2021.2.2)
OpenJDK12下载地址:
https://hg.openjdk.java.net/jdk/jdk12/
- 下载安装解压即可
编译工具版本推荐:
- GCC 7.4及以上# Ubuntu上安装GCC命令,该命令默认安装9.3版本(2021年) sudo apt-get install build-essential
编译依赖库:
工具 | 库名称 | 安装命令 |
FreeType | The FreeType Project | sudo apt-get install libfreetype6-dev |
CUPS | Common UNIX Printing System | sudo apt-get install libcups2-dev |
X11 | X Window System | sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev |
ALSA | Advanced Linux Sound Architecture | sudo apt-get install libasound2-dev |
libffi | Portable Foreign Function Interface Library | sudo apt-get install libffi-dev |
Autoconf | Extensible Package of M4 Macros | sudo apt-get install autoconf |
Bootstrap JDK 准备:
- OpenJDK11sudo apt-get install openjdk-11-jdk
开始编译
编译FastDebug版,仅含Server模式的HotSpot虚拟机命令:
bash configure --enable-debug --with-jvm-variants=server
# 嫌写那么多麻烦,直接用下面这个:point_down:,不过这个是生成release版本的,不利于debug
bash configure
configure命令会进行依赖项检查,参数配置和构建输出目录结构等操作,所以依赖缺失会得到明确提示:
ZIP安装命令:
sudo apt-get install zip
继续检查...继续安装缺失的依赖...
成功界面:
依赖检查通过后,执行 make images 命令执行整个OpenJDK的编译,作用是编译出整个JDK镜像
不出所料,编译报错:
充分利用了搜索引擎,以及认真阅读了 building.md 文件后,发现应该是gcc的版本问题,默认安装的是9,但实际需要的是7,于是把9给卸载了,重新安装了个7
# 卸载命令
sudo apt-get remove gcc-9
# 安装7
sudo apt-get install gcc-7
sudo apt-get install g++-7
# 如果上述命令安装后,gcc --version能查出版本而不会报错,就无需使用以下命令
# 或者已有7和9两个版本,但默认用的是9,也可用以下命令修改为7
# 设置默认选项
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 100
sudo update-alternatives --config gcc
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 100
sudo update-alternatives --config g++
万事俱备只欠东风。先 make dist-clean 清理一波编译生成的临时文件,接着一波流:
bash configure --enable-debug --with-jvm-variants=server
make images
漫长的等待后...没有报错!!!
测试一波:
./build/*/images/jdk/bin/java -version
编译成功:
目录结构:
在IDE工具上调试
导入JDK源码文件,open file 选择 MakeFile ,有弹窗清除 clean ,然后一直确认即可
等待导入......
接着会发现帮你生成了一堆的 targets ,将根目录Mark Directory as 一下
然后选 all 即可,打开编辑,Executable选择编译出来的 java 命令,Before launch移除 Build
具体设置各项参数如图:
找到 java.c 文件,打个断点,直接 Debug 启动(开始你的表演):
配置 -version 只是测试一下是不是真的能够调试了而已,如果想要调试某个Java类呢
IDEA配合Clion远程调试
IDEA配置
- 添加Configuration,选择Remote JVM Debug即可:
Clion配置
- 添加Configuration,选择Custom Build Configuration
- Target 需要添加一下,make编译配置make clean配置
- Executable依然选择编译出来的Java命令
- Program arguments填写:-jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5008 xxx.jar
- Working directory选择:上述jar包生成位置
最终配置如图:
参考资料
《深入理解Java虚拟机:JVM高级特性与最佳实践》(第三版)1.6实战:自己编译JDK
原文链接:
https://www.cnblogs.com/Zhouge6/p/15781939.html?utm_source=tuicool&utm_medium=referral
更多相关网站
- centos Linux编译OpenJdk1.8_linux配置openjdk
- Linux 下安装JDK17_linux的jdk安装
- JDK21你可以不用,新特性还是要了解的
- JDK11的下载安装与环境变量配置java11
- 一文了解JDK12 13 14 GC调优秘籍-附PDF下载
- 程序员:JDK的安装与配置(完整版)_jdk的安装与配置使用
- java工具篇-jdk环境_jdk的环境配置教程
- 删除CentOS系统自带的jdk_centos删除java
- OpenJDK 8 安装_openjdk 8 windows
- Java从零开始:不同系统JDK的安装及Java基本命令
- MyEclipse中文教程二:JDK、变量安装及配置方法
- JDK1.8安装&环境变量配置_java安装jdk配置环境变量
- 手把手教你配置JDK_如何配置jdk1.8
- 测试员必备:Linux下安装JDK 1.8你必须知道的那些事
- 深入理解JVM《JVM监控与性能工具实战 - 系统的诊断工具》
- JDK 8升级高版本JDK指南_jdk1.7升级到1.8会有啥影响
- Windows和Linux环境下的JDK安装教程
- JAVA 8 环境安装配置_java环境如何安装
- 最近发表
- 标签列表
-
- mydisktest_v298 (35)
- sql 日期比较 (33)
- document.appendchild (35)
- 头像打包下载 (35)
- 梦幻诛仙表情包 (36)
- java面试宝典2019pdf (26)
- disk++ (30)
- 加密与解密第四版pdf (29)
- iteye (26)
- centos7.4下载 (32)
- intouch2014r2sp1永久授权 (33)
- jdk1.8.0_191下载 (27)
- axure9注册码 (30)
- 兔兔工程量计算软件下载 (27)
- ccproxy破解版 (31)
- aida64模板 (28)
- engine=innodb (33)
- shiro jwt (28)
- segoe ui是什么字体 (27)
- head first java电子版 (32)
- clickhouse中文文档 (28)
- jdk-8u181-linux-x64.tar.gz (32)
- 计算机网络自顶向下pdf (34)
- -dfile.encoding=utf-8 (33)
- jdk1.9下载 (32)