win10下编译以及调试openjdk

本文介绍如何在Windows环境下使用Cygwin64及Ubuntu编译OpenJDK,并详细说明所需安装的软件包和配置步骤。此外,还介绍了如何使用CLion进行OpenJDK的调试,包括配置调试环境及创建CMakeLists.txt文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译OpenJDK

安装编译环境

下载openjdk

使用git clone(如果觉得慢可以使用coding导入的jdk

安装编译工具

1.win下Cygwin64环境编译
  1. 安装Cygwin

    1. 官方下载
    2. 设置下载源
      清华下载源
  2. 需要安装的包
    cywin64需要的包

补充:需要安装autoconf
  1. 编译选项&检查

bash ./configure -with-freetype=buddle -enable-debug -with-target-bits=64 -disable-ccache

  1. 构建
make all
2.win下linux环境编译(ubuntu )
  1. 需要安装的包
    |包名| 命令 |
    |–|:–|
    | gcc | sudo apt-get install build-essential|
    | FreeType|sudo apt-get install libfreetype6-dev|
    | CUPS| sudo apt-get install libcups2-dev|
    | X11| sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev|
    | ALSA| sudo apt-get install libasound2-dev|
    | libffi| sudo apt-get install libffi-dev|
    | Autoconf| sudo apt-get install autoconf|
    | zip| sudo apt-get install zip|

  2. 执行命令

 bash configure --enable-debug --with-jvm-variants=server --with-boot-jdk=/mnt/e/jdk/jdk-16 --with-tools-dir=/mnt/d/vs/2019/Community/VC/Auxiliary/Build

命令解释:

–with-boot-jdk 如果找不到正确jdk,通过该命令可以手动指定
jdk版本必须是编译版本的前一个版本
jdk需与目标平台(win/linux)一致

–with-tools-dir 指定编译工具目录,具体指向跟编译目标有关

注意:win下wsl默认编译win平台jdk,如果需要编译linux版本需要进行配置

build.doc

遇到的问题

win10sdk路径包含括号
在这里插入图片描述
在这里插入图片描述
解决:更换目录
移动到正常目录(括号都不行,中文就更不行了
创建软连接

   mklink /J "C:\Program Files (x86)\Windows Kits" "D:\WindowsKits"

当路径包含空格,路径会被截断。(参数是路径也会,最好是不要有空格)
在这里插入图片描述
警告
在这里插入图片描述
解决:执行

make clean

错误
在这里插入图片描述
解决:手动删除jdk下build文件夹

编译成功

编译成功
验证jdk
验证jdk

ps:如果可以的话直接在linux系统下编译,就不会有这么多的路径问题

调试OpenJDK

安装clion

因为我是java使用idea,clion和它属于一家公司产品,使用方式相似,上手容易。安装过程(略)

配置clion

根据编译jdk时使用的工具链,调试时应该选择对应的工具链,否则会出现debug无效的情况

上一篇文章我虽然使用wsl环境编译jdk,但编译工具使用的是vs工具链,所以调试选择vs工具链。
vs工具链
WSL配置
当成普通linux服务器进行连接即可,缺什么安装什么,一般是缺失cmake,gdb。
wsl配置

导入项目

  1. 导入jdk目录
  2. 创建CMakeLists.txt
    简易版(能调试,大量飘红,少部分代码能跳转)
#自己版本能用就行
cmake_minimum_required(VERSION 3.16)
project(jdk)
# 添加源文件
file(GLOB_RECURSE SOURCE_FILES "*.cpp" "*.hpp" "*.c" "*.h")
# 添加执行配置
add_executable(hotspot ${SOURCE_FILES})

复杂版(emmmm,我不会cmake,百度到的都是少了,有大佬教我吗

#自己版本能用就行
cmake_minimum_required(VERSION 3.16)
project(jdk)
# 添加源文件
file(GLOB_RECURSE SOURCE_FILES "*.cpp" "*.hpp" "*.c" "*.h")
# 添加执行配置
add_executable(hotspot ${SOURCE_FILES})
  1. 修改run configuration

    1. 修改executable为build/windows-x86_64-server-fastdebug/jdk/bin/java.exe
    2. 设置参数,测试用-version,可以换成类
    3. 删除build下before launch下的build
      配置结果

运行结果

断点打在src/java.base/share/native/libjli/java.c中的JavaMain函数,对c/c++不是很了解,看调用帧,这个应该是入口,下面三个点进去是汇编代码。
调试openjdk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值