当前位置: 首页 > news >正文

Windows 11 + WSL(ubuntu 20.04) + CLion(2022.3) 编译OpenJDK12

编译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的相对地址,不选驱动盘符下的绝对地址
Toolchains
CustomBuildTargets
Run?debugConfigurations

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。
http://www.lryc.cn/news/8113.html

相关文章:

  • Freemarker 语法精粹
  • 使用Benchto框架对Trino进行SQL性能对比测试
  • Redis之哨兵模式
  • Selenium自动化测试Python二:WebDriver基础
  • 蓝桥杯模块学习17——AT24C02存储器(深夜学习——单片机)
  • netty
  • Django项目部署-uWSGI
  • jhipster自动生成java代码的方法
  • LeetCode 82. 删除排序链表中的重复元素 II
  • tensorflow gpu环境安装
  • 如何在现实场景中随心放置AR虚拟对象?
  • 操作系统-处理机调度
  • 手机截图如何提取文字?
  • vue中复制内容
  • MySQL CAST()函数用法
  • 【测试工程师面试】详细记录 自己的一次面试
  • Elasticsearch 安装(二)
  • Java基础:异常与错误(ExceptionError)
  • VAmPI:一个包含了OWASP Top10漏洞的REST API安全学习平台
  • springboot(6)之前端传递参数的方式 普通 集合 数组
  • redis分布式锁的演变过程
  • leaflet 修改popup的样式,个性化弹窗(069)
  • 注解ConfigurationProperties、EnableConfigurationProperties的用法
  • 自适应布局之淘宝无限适配+rem+微信rpx自适应
  • esxi不能识别不兼容网卡解决方案
  • Sizeof与Strlen的区别与联系
  • 力扣(LeetCode)413. 等差数列划分(2023.02.15)
  • 蓝桥杯刷题——基础篇(一)
  • Java基础知识快速盘点(三)
  • vscode编程小插件之Doxygen和Better Align