Windows 11 + WSL(ubuntu 22.04.3) + CLion(2023.3.4) 编译OpenJDK17

我是蚂蚁背大象(Apache EventMesh PMC&Committer),文章对你有帮助给项目rocketmq-rust star,关注我GitHub:mxsm,文章有不正确的地方请您斧正,创建ISSUE提交PR~谢谢! Emal:mxsm@apache.com

1. 前言

为了深入的理解JVM,我们使用JDK的源码来导入CLion开发工具自己编译JDK.下面使用的环境:

  • windows11
  • WSL2(ubuntu 20.04)
  • CLion(2023.3.4)

2. 准备工作

2.1 下载OpenJDK源码

github上下载OpenJDK源码到本地

shell 复制代码
$ git clone https://github.com/openjdk/jdk.git

切换到jdk17的tag版本,这里准备使用JDK17的版本使用

shell 复制代码
$ git checkout tags/jdk-17+34 -b jdk-17

2.2 安装OpenJDK-17

为了能够安装jdk17更新升级Ubuntu软件资源库

shell 复制代码
$ sudo apt update && sudo apt upgrade -y

安装OpenJDK17,这个仔后续的编译的过程中需要用到,如果本地已经安装了jdk17就不需要进行这个操作。

shell 复制代码
$ sudo apt-get install openjdk-17-jdk

完成上述准备工作后进行OpenJDK编译,

3. 编译OpenJDK

3.1 执行编译命令

shell 复制代码
$ bash configure --enable-debug --with-jvm-variants=server --build=x86_64-unknown-linux-gnu

因为使用的WSL进行JDK进行编译所以需要 --build=x86_64-unknown-linux-gnu 参数,否则会报错,后面有没有使用这个参数报错的说明。

编译成功后会看到如下图所示信息:

执行编译命令的时候可能会遇到下面的问题,针对下面的问题进行一一的解决。

问题1:error: The path of BOOT_JDK

上述问题导致的原因是命令使用的是**/usr/bin/javac** 中的命令而实际的Java home并不在里面。所以需要重新设置一下JAVA_HOME才能解决。如果直接使用的二进制包配置可能不会出现此问题。

使用的是直接通过命令进行安装,这里需要将之前安装的JDK17配置仔path里面。 使用命令查看:

shell 复制代码
$ update-alternatives --config java

配置path:

问题2:error: Cannot locate a valid Visual Studio installation

此问题应该是在WSL编译会出现的问题解决方式可以参照官方的文档github.com/openjdk/jdk...

命令增加:

shell 复制代码
$  bash configure --build=x86_64-unknown-linux-gnu

问题3: error: Could not find all X11 headers

执行下面命令安装:

shell 复制代码
sudo apt-get install libxrandr-dev

问题4:error: Could not find cups!

执行命令安装:

shell 复制代码
sudo apt-get install -y libcups2-dev

上述问题可能不是全部,大部分可能是因为缺少包导致。安装对应的包都能解决

3.2 构建images

shell 复制代码
$ make images CONF=linux-x86_64-server-fastdebug

编译成功:

4. 导入CLion

运行命令生成更新compile_commands.json

shell 复制代码
$ make compile-commands CONF=linux-x86_64-server-fastdebug

执行上述命令会在build对应的目录中更新对应文件下面的compile_commands.json文件内容。下图是本人的生成目录这个因人而异

然后使用Clion通过选择这个文件导入项目。导入项目后切换项目根目录,操作路径:Tools -> Compilation Database -> Change Project Root

查找一下main.c这个文件

此时已经导入

5.配置调试

需要配置构建目标,操作路径: Preferences > Build, Exceution, Deployment > Custom Build Targets

最终打开Edit Tool 编辑小面板,其中Tool Settings几个参数内容分别是:

第二个:

编辑配置:

选择自定义构建应用

执行选择已经编译好的java命令。然后点击运行debug模式

通过断点可以看到断点位置已经运行到。说明已经成功运行调试模式。

5. 总结

要在 Windows 11 上通过 WSL(Windows Subsystem for Linux)运行 Ubuntu 22.04.3,并使用 CLion(2023.3.4 版本)来编译 OpenJDK 17,你可以按照以下步骤进行操作:

  • 在windows上安装WSL和 Ubuntu 22.04.3

  • 下载安装安装 CLion

  • 下载 OpenJDK 17 源代码

    在 Ubuntu 终端中,使用 Git 或 Mercurial 克隆 OpenJDK 17 的源代码仓库。你可以选择官方的 OpenJDK 源代码仓库或者其他可信赖的仓库。(其他版本可以参照这个版本进行)

  • 配置编译环境

    按照 OpenJDK 17 编译文档的要求,配置编译环境,包括设置环境变量、安装必要的软件等。 在编译过程总可能会遇到一些缺少的包,可以根据个人的情况不同进行安装。

  • 编译OpenJDK

    根据OpenJDK的给的编译文档github.com/openjdk/jdk...进行一步步运行命令

  • 使用 CLion 打开 OpenJDK 17 项目

    这个参照上面的导入前处理以及导入的注意事项进行处理。然后验证是否成功。

完成了整个导入后在后续对JVM的学习以及Java的学习可以能够更加深入底层原理。

相关推荐
疾风sxp1 分钟前
nl2sql技术实现自动sql生成之Spring AI Alibaba Nl2sql
java·人工智能
2301_800256114 分钟前
第十一章中的函数解读(1)
后端·asp.net
喵爸的小作坊6 分钟前
StreamPanel:一个让 SSE 调试不再痛苦的 Chrome 插件
前端·后端·http
神奇小汤圆7 分钟前
字符串匹配算法
后端
无限大613 分钟前
为什么网站需要"域名"?——从 IP 地址到网址的演进
后端
树獭叔叔19 分钟前
LangGraph Memory 机制
后端·langchain·aigc
BullSmall19 分钟前
Tomcat11证书配置全指南
java·运维·tomcat
永不停歇的蜗牛21 分钟前
K8S之创建cm指令create和 apply的区别
java·容器·kubernetes
Java编程爱好者22 分钟前
OpenCVSharp:了解几种特征检测
后端