likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 9

我是蚂蚁背大象(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源码到本地

$ git clone https://github.com/openjdk/jdk.git

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

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

$ git checkout tags/jdk-17+34 -b jdk-17

2.2 安装OpenJDK-17

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

$ sudo apt update && sudo apt upgrade -y

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

$ sudo apt-get install openjdk-17-jdk

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

3. 编译OpenJDK

3.1 执行编译命令

$ bash configure --enable-debug --with-jvm-variants=server --build=x86_64-unknown-linux-gnu

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

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

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

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

问题1:error: The path of BOOT_JDK

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

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

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

$ update-alternatives --config java

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

配置path:

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

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

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

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

命令增加:

$  bash configure --build=x86_64-unknown-linux-gnu

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

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

执行下面命令安装:

sudo apt-get install libxrandr-dev

问题4:error: Could not find cups!

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

执行命令安装:

sudo apt-get install -y libcups2-dev

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

3.2 构建images

$ make images CONF=linux-x86_64-server-fastdebug

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

编译成功:

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

4. 导入CLion

运行命令生成更新compile_commands.json

$ make compile-commands CONF=linux-x86_64-server-fastdebug

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

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

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

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

查找一下main.c这个文件

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

此时已经导入

5.配置调试

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

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

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

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

第二个:

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

编辑配置:

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

选择自定义构建应用

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

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

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

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

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

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的学习可以能够更加深入底层原理。