原创

Jdk&hotspot源码编译及调试

官方文档

/jdk-master/doc/building.html

Cygwin installer安装以下组件

Apart from the basic Cygwin installation, the following packages must also be installed:

v autoconf

v make

v zip

v Unzip

安装过程中报错几处,忽略。

Cygwin进入d盘命令

#cd d:

#cd /code/clion/jdk-master

Configure命令

bash ./configure -with-target-bits=64 --with-freetype="/cygdrive/D/freetype-2.7/" --with-tools-dir="/cygdrive/d/dev/MicrosoftVisualStudio/2022/Community/VC/Auxiliary/build" --disable-warnings-as-errors --with-debug-level=fastdebug --disable-ccache

注意,MicrosoftVisualStudio包含空格,windows kits亦然。

安装上一版本jdk

因为我是从github获取的最新jdk源码,所以按提示安装jdk19

Your Boot JDK version must be one of: 19 20 21

openjdk下载贼慢

OpenJDK JDK 19.0.2 GA Release

https://jdk.java.net/19/

Oracle的好很多

Java Downloads | Oracle

https://www.oracle.com/java/technologies/downloads/#jdk19-windows

安装visual studio

Cannot locate a valid Visual Studio installation

安装的社区版,提示和当前win10版本可能不兼容,暂时忽略,以后有问题考虑升级win10

img

img

添加WindowsKit配置,不要空格

img

img

怀疑是sdk环境变量有问题,环境变量已修改,问题依旧。网上查看修改vs sdk路径的问题

安装VS2019时遇到SDK路径无法修改问题 - 江南水岸渣fit人 - 博客园

https://www.cnblogs.com/cquptyy/p/15405855.html

删除注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup下的SharedInstallationPath项。

我其实并不想重装,尝试修改注册表.......

顺便找到了这个,修改如下图

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots

img

仍然报错....

思路又断了......

顺着Microsoft.Cpp.WindowsSDK.targets的目录,找到了Microsoft.Cpp.WindowsSDK.props

img

备注:onfigure --with-debug-level=debug时使用fastdebug目录下的set-vs-env.sh,否则使用release目录下的。

此文件会自动复写,只能做错误分析用

此文件找到的方式是,在jdk源码下随便翻找、在visual studio目录下随意翻找,结合configure输出及日志、环境变量等信息。

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v10.0

修改installationFolder路径

img

应该是此处,visual studio中新建的c++ hello world项目已经可以正常使用了。

这个过程中,还使用的“重定目标解决方案”,重启explorer.exe.

img

注意上图中的Microsoft.Cpp.WindowsSDK.targets给了我启发,后面会用到

重新configure

查看config.log如下

img

img

#set-vs-env.sh如下

img

索性搜索注册表中所有的D:\WindowsKits

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows Kits\Installed Roots

img

修改注册表后需要重启吗 修改注册表不用重启就能生效的方法

http://www.ttep.cn/jy/6989.html

Win10系统中Explorer.exe进程位置在哪 - 软件教程网

http://www.2832.com.cn/njBz02jV/

上一错误解决,出现下一错误,详见参考

(134条消息) 编译OpenJDK12:Target CPU mismatch. We are building for x8664 but CL is for ""; expected "x64"柳鲲鹏的博客-CSDN博客_target cpu mismatch. we are building for x86_64 bu

https://blog.csdn.net/quantum7/article/details/100008187

img

img

configure: error: Valid values for --with-freetype are 'system' and 'bundled'

解决方法:

删除--with-freetype="/cygdrive/D/freetype-2.7/"

修改后命令如下

bash ./configure -with-target-bits=64 --with-tools-dir="/cygdrive/d/dev/MicrosoftVisualStudio/2022/Community/VC/Auxiliary/build" --disable-warnings-as-errors --with-debug-level=fastdebug --disable-ccache

编译成功,但有warning

img

#make images 
大概十分钟左右

进入目录:D:\code\clion\jdk-master\build\windows-x86_64-server-fastdebug\jdk\bin
查看编译的java版本

img

Clion debug jdk

问题:

断点堆栈一堆unkown,变量也没有,郁闷......

(134条消息) 通过CLion 调试JDK源码_蛤蟆脚的博客-CSDN博客_clion jdk

https://blog.csdn.net/qq_25825005/article/details/127163309

Tips & Tricks: Develop OpenJDK in CLion with Pleasure | The CLion Blog

https://blog.jetbrains.com/clion/2020/03/openjdk-with-clion/

(134条消息) JDK编译以及在CLion中进行源码调试(抄书+踩坑记录)_AlaGeek的博客-CSDN博客_clion 调试jdk

https://blog.csdn.net/Stone__Fly/article/details/117266349

JVM | Clion导入OpenJDK11源码并调试 - 腾讯云开发者社区-腾讯云

https://cloud.tencent.com/developer/article/1584598

Mac 10.14.4 编译openjdk1.9源码 及集成clion动态调试

https://www.bbsmax.com/A/x9J2PO9Vd6/

Visual studio debug jdk

注意,visual studio启动非空目录下的那个,

报错:

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MSB3073 命令“D:\cygwin64\usr\bin\make -f ../../Makefile hotspot LOG=info”已退出,代码为 3。 jvm D:\dev\MicrosoftVisualStudio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets 45 D:\cygwin64\bin\make -f ../../Makefile hotspot LOG=info

发现make路径有问题,更改如下,问题解决

img

编写TestString.java,编译为java.class,添加调试参数如下,注意有空格

img

还有问题,就是调用堆栈不出来,不进断点,烦躁....

重要参考:

./configure -with-freetype=/cygdrive/d/MyWorkSpace/freetype-2.9.1/ -enable-debug -with-target-bits=64 with_toolsdir="/cygdrive/c/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build" --disable-ccache

./configure -enable-debug -with-target-bits=64 --with-tools-dir="/cygdrive/D/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build" --disable-ccache

--libdir="/cygdrive/D/WindowsKits/10/Lib/10.0.17134.0/um/x64"

D/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build

d/ProgramFiles/MicrosoftVisualStudio/2022/Community/VC/Auxiliary/Build

d/dev/MicrosoftVisualStudio/2022/Community/VC/Auxiliary/Build

with-freetype

--with-freetype="/cygdrive/D/freetype-2.10.4/"

win10&Cygwin编译调试OpenJDK11(精简) - xiaoye-2018 - 博客园

https://www.cnblogs.com/xiaoye-2018/articles/15813470.html

但此处未提到freetype

FreeType 下载,实际并未用到

(134条消息) Windows 10 VS2022编译FreeType 2.12.1_qiuzen的博客-CSDN博客_windows安装freetype https://blog.csdn.net/qiuzen/article/details/127475238 Download FreeType for Windows - Free - 2.10.4 https://downloads.digitaltrends.com/freetype/windows

正文到此结束