Win 10 编译调试Openjdk 17

519 阅读4分钟

编译JDK、Clion调试配置

  1. 下载vsisual stuidio, 我用的2017, 直接下载社区版即可. i tell you / 官网都可以下载

    • 选择工作组件 image.png

    • 选择语言包,使用英文 image.png

    • 安装位置必须设置英文, 不含空格 image.png

    • 我安装完成的图

      image.png

  2. 下载openjdk 17, 进入仓库: github.com/openjdk/jdk…, 点击code下载zip文件即可, 完成后解压到本地目录

    image.png 由于编译jdk, 需要一个bootjdk, 直接去adopt 网站下载一个17的版本: adoptium.net/zh-CN/temur… image.png 解压到指定目录

  3. 安装 cygwin, 直接进入官网安装最新版。 www.cygwin.com/ 安装的时候会让你选择一个镜像地址,可以选择阿里云。

  4. 对cygwin安装组件,打来cygwin的exe下载目录,打开cmd,执行下面命令:

    ./setup-x86_64 -q -P autoconf -P make -P unzip -P zip
    
  5. 打开cygwin 命令行文件,知道怎么打开吧:

    image.png

    切换到解压后的jdk源码文件夹, cd: /cygdrive/e/c_project/jdk-jdk-17-35 我这里指的是切换到e盘, c_project/jdk-jdk-17-35 文件夹目录.

  6. 执行configure 命令

    # --with-boot-jdk: 参数表示bootjdk 的路径
    # --with-tools-dir: 指定visual studio C的库文件位置(需要指定到内部的Auxiliary), 我的是安装到d盘的VS 目录下的
    ./configure --with-target-bits=64 --enable-debug --with-jvm-variants=server --with-boot-jdk=/cygdrive/d/environment/OpenJDK17U-jdk_x64_windows_hotspot_17.0.10_7/jdk-17.0.10+7 --with-tools-dir=/cygdrive/d/VS/VC/Auxiliary --disable-warnings-as-errors
    
  7. 上面命令顺利的话,会得到下面结果, 表示配置通过 image.png

    我的报了如下错误, 主要的错误是提示windwos kits 目录中有空格 586aeaefe410abdc14039c5daf0a918.png

    由于visual studio 安装后默认 sdk 安装包就是windwos kits 目录, 安装过程中无法更改, 这里修改注册表

    打开注册表,ctrl+f 搜索Windows Kits 目录, 首先找到你的Windows Kits 在哪个位置, 默认好像是在: C:\Program Files (x86)\Windows Kits, 也可能是在vs 安装时指定的目录里面, 我这里是在(我电脑之前被其他软件改过vs 的注册表,不知道默认是不是在这里)D:\Windows Kits\10, 需要选择全字匹配

    image.png

    搜索的第一处: 这里我直接简单处理删除中间的空格, 我的电脑有两处KitsRoot10

    image.png

    继续搜索:

    image.png

    直到搜索完毕后, 修改文件夹目录为WindowsKits, 再次执行configure 命令即可.

  8. 编译: 上一步完成后,直接执行make images
    我这里没有出现任何错误:

    1e2a3b9a84a4039e3f1577f6920235a.png

  9. 继续执行命令,用于构建目录索引, 供clion打开 make compile-commands 执行后,会在build 生成文件:

    image.png

  10. clion 打开 文件上面的json文件, 可能会提示下面,选择第二个, 没有就不管

    image.png

  11. 正常打开项目, 右下角应该会展示一个进度条表示正在处理,如果没有展示可以去删除目标目录的.idea配置文件,重新导入试试

    image.png

  12. 更改目标为源码根目录

    image.png

    image.png

  13. 配置clion 配置toolchain, 目录哪里选择vs的安装目录就行,其他会自动识别

    image.png

    配置custom build targets, (之前用cmake执行貌似不用配这个, 这次不知道为啥cmake 用了是灰色的启动按钮) image.png 点击build 右边那个图标

    image.png

  14. 配置启动参数:

    image.png

    image.png

  15. 打开java.c 打断点, 点击调试按钮,将会停住断点位置

    image.png

    输出如下: image.png

idea debug native 函数, clion 分析native

  1. 随便创建一个demo, 使用编译后的jdk版本,保持一致执行,否则可能clion无法断点

    image.png

    执行到断点位置, jps 得到id

    image.png

  2. clion attach 进程, ctrl+ alt + f5, 搜索id, 选择lldb

    image.png

  3. 在cion 下断点, 对应的native代码位置:

    image.png

  4. idea 放过执行, 代码将自动停到clion断点处:

    image.png


编译过程相对还是比较顺利, 主要的问题还是出在visual studio 安装后目录文件名的问题

如果遇到其他问题可以自行百度, 或者查看shell 文件, 分析具体是哪里的问题

参考连接: