Windows 10 下编译 64 位 OpenJDK 8 并单步调试

OpenJDK8 编译,调试和目录结构 目录 一、下载源码 二、编译 三、搭建开发环境 四、GDB调试 五、目录结构说明 一、下载源码 可选择在OpenJDK(http://hg.openjdk.java.net/jdk8u)的官方代码仓库下载zip包,如下图所示: 可选择命令行的方式,先执行sudo yuminstall Mercurial 安装类似git的仓库管理工具hg,然后执行hg clon... 阅读详情

Windows 10 下编译 64 位 OpenJDK 8

软件版本

  • 操作系统:Windows 10

    image.png

  • Cygwin:3.5.4-1

    image.png

  • Visual Studio:2010 英文版

    image.png

  • freetype: 2.7

    image.png

  • Boot JDK:7

    image

  • 编译的 OpenJDK 版本:8

    image.png

安装 boot JDK

从下载链接下载 JDK,然后在 Windows 上安装。安装完成后配置 JAVE_HOME 环境变量,如下图所示:

bootjdk02.png

在已有的 Path 环境变量加入 %JAVA_HOME%\bin ,如下图所示:

bootjdk03.png

配置完成后在 cmd 中执行 java -version 命令,可以看到对应的版本信息,则证明已配置好,如下图所示:

image

安装 Cygwin

从下载链接下载安装程序,然后在 Windows 上安装。
设置安装的路径,这里设置的是 E:\cygwin64,如下图所示:

cygwin01.png

选择要额外安装的命令,包括:binutils,cpio,m4,make,procps-ng,unzip,zip。
选择安装 binutils 命令,如下图所示:

cygwin02.png

选择安装 cpio 命令,如下图所示:

cygwin03.png

选择安装 m4 命令,如下图所示:

cygwin04.png

选择安装 make 命令,如下图所示:

选择安装 procps-ng 命令,如下图所示:

cygwin06.png

选择安装 unzip 命令,如下图所示:

cygwin07.png

选择安装 zip 命令,如下图所示:

cygwin08.png

安装完成后在已有的 Path 环境变量加入 E:\cygwin64\bin 路径,如下图所示:

image.png

安装 VS 2010

从下载链接下载 VS 2010 英文版(这里一定要用英文版),然后在 Windows 上安装。

安装的时候设置安装路径,注意路径中不能有空格,如下图所示:

vs01.png

安装的特性只需要勾选 Visual C++,如下图所示:

vs02.png

在已有的 Path 环境变量加入 E:\MicrosoftVisualStudio10.0\VC\bin 路径,如下图所示:

image.png

下载并编译 freetype

从下载链接下载 freetype 源码并解压。

然后打开 VS 2010,点击 File->Open->Project/Solution,选择 freetype 解压路径下的 builds\windows\vc2010\freetype.sln 文件并打开,如下图所示:

vs03.png

vs04.png

右键后点击 Properties,如下图所示:

vs06.png

配置编译成静态链接库,选择 Configuration 为 Release Multithreaded,Platform 选择 x64, Target Name 修改为 freetype,Target Extension 修改为 .lib,Configuration Type 修改为 Static libraty(.lib),如下图所示:

vs07.png

点击 Build-> Build Solution 编译静态链接库,编译完成后在 freetype 解压路径下的 objs\vc2010\x64 目录下会生成 freetype.lib 文件,如下图所示:

image.png

配置编译静态链接库,主要是 Target Extension 修改为 .dll,Configuration Type 修改为 Dynamic Library(.dll),如下图所示:

vs10.png

点击 Build-> Build Solution 编译动态链接库,编译完成后在 freetype 解压路径下的 objs\vc2010\x64 目录会生成 freetype.dll 文件,如下图所示:

vs11.png

然后在 freetype 解压路径下创建 lib 目录,把 freetype.lib 和 freetype.dll 两个文件拷贝到这个 lib 目录下,如下图所示:

vs12.png

下载并编译OpenJDK 8

从下载链接下载 OpenJDK 8 的源码并解压。如果你使用的软件版本和本文的软件版本一致,则推荐下载替换文件 替换到解压后相对应的目录下,不然编译的时候会遇到报错。不一致的话则手动修改解压后的文件,见后面的编译遇到的问题及解决办法。

在 OpenJDK 8 的解压路径下执行 ./configure --with-freetype='/cygdrive/e/freetype-2.7' --with-target-bits=64 --enable-debug -disable-ccache 命令,其中 --with-freetype 替换为实际的 freetype 的路径,执行成功后的提示如下图所示:

image.png

configture01.png

然后执行 make all 命令开始编译,等待编译结束,编译成功后会在 OpenJDK 8 解压路径下的build 目录生成 windows-x86_64-normal-server-fastdebug 目录,编译后的 JDK 就在这个目录下,如下图所示:

image.png

image.png

进入到 build\windows-x86_64-normal-server-fastdebug\jdk\bin 目录,执行 java -version,就可以看到输出如下图所示:

image.png

这个时候就拥有了一个在自己电脑上编译出来的 JDK 8 了。

编译遇到的问题及解决办法

Your cygwin is too old

执行 ./configure --with-freetype='/cygdrive/e/freetype-2.7' --with-target-bits=64 --enable-debug -disable-ccache 命令后可能会遇到报错提示: Your cygwin is too old.,如下图所示:

image.png

这个是因为 OpenJDK 8 解压路径下的 common\autoconf\generated-configure.sh 脚本有 Bug ,这个脚本中把 Cygwin 的版本写死了,确保你的版本大于 1.7 之后,把这里的版本修改为你自己的版本号即可。如果你的版本和本文使用的版本一致,则直接可以下载替换文件后替换即可,如下图所示:

image.png

image.png

time is more than 10 years from present

执行 make all 命令后,可能会遇到报错提示: time is more than 10 years from present,如下图所示:

compileerror01.png

这个是因为 OpenJDK 8 解压路径下的 jdk\make\src\classes\build\tools\generatecurrencydata\GenerateCurrencyData.java 这个类中校验了不能超过 10 年。可以手动将这里的 10 修改为 100, 或者直接可以下载替换文件后替换即可。替换完成后执行 make clean 命令清理,然后再执行 make all 命令,如下图所示:

image.png

image.png

images-only

执行 make all 命令后,可能会遇到报错提示: Main.gmk:136: images-only] Error 2 ,如下图所示:

image.png

这个是因为 OpenJDK 8 解压路径下的 jdk\make\CreateJars.gmk 文件有两处地方少了回车符号,如下图所示:

image.png

可以手动给这两处增加回车符号,方法为在 insert 模式下,先按 Ctrl + V ,然后再按 Ctrl + M,或者直接可以下载替换文件后替换即可。替换完成后执行 make clean 命令清理,然后再执行 make all 命令编译,如下图所示:

编译成功后输出如下图所示:

image.png

Windows 10 下单步调试 OpenJDK 8

创建调试项目

修改 OpenJDK 8 解压路径下的 hotspot\make\windows\create.bat 脚本中的内容,将脚本中默认的 cygwin64 的安装路径修改为实际的安装路径,如下图所示:

image.png

image.png

image.png

进入到 VS 2010 安装路径下的 VC\bin\amd64,执行 vcvars64.bat,执行完成后不退出这个命令行,如下图所示:

image.png

在同一个命令行进入到 OpenJDK 8 解压路径下的 hotspot\make\windows 目录,执行 create.bat E:\jdk-jdk8-b120\jdk 命令创建 VS 2010 项目文件,如下图所示:

image.png

image.png

配置单步调试

将 OpenJDK 8 解压路径下 build\windows-x86_64-normal-server-fastdebug\jdk\bin\java.diz 解压到所在的路径下,如下图所示:

image.png

用 VS 2010 打开 OpenJDK 8 解压路径下的 hotspot\build\vs-amd64\jvm.vcxproj 文件,如下图所示:

image.png

右键后点击 Properties,配置 Debugging 参数,Configuration 选择 compiler2_fastdebug,Platform 选择 x64,Command 配置编译出来的 java.exe ,Command Arguments 增加 -version 参数,这里相当于就是配置执行 java -version 命令,Environment 配置 JAVA_HOME 为编译出来的 JDK 路径,如下图所示:

image.png

配置完成后,按 F7 重新 build 一下项目,如下图所示:

image.png

image.png

在 OpenJDK 8 解压路径下 share/vm/runtime/arguments.cpp 中的 init_system_properties() 打个断点,如下图所示:

image.png

点击调试按钮后,代码在断点处停下,如下图所示:

image.png

单步调试遇到的问题及解决办法

创建调试项目报错

执行 create.bat 脚本报如下错误:
The code execution cannot proceed because mspdb 100.dll was not found. Reinstalling the program may fix this problem.

createproject01.png

是因为没有在同一个命令行执行 vcvars64.bat 见 创建调试项目

单步调试报错

点击 Debug 按钮启动调试报错如下:
'java.exe': Loaded 'E:\openjdk8\openjdk\build\windows-x86_64-normal-server-fastdebug\jdk\bin\java.exe', Symbols loaded.
'java.exe': Loaded 'C:\Windows\System32\ntdll.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\kernel32.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\KernelBase.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\apphelp.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\advapi32.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\msvcrt.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\sechost.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\rpcrt4.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\user32.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\win32u.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\gdi32.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\gdi32full.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\msvcp_win.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\ucrtbase.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e\comctl32.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\imm32.dll', Cannot find or open the PDB file
The thread 'Win64 Thread' (0x1048) has exited with code 4 (0x4).
The thread 'Win64 Thread' (0x1efc) has exited with code 4 (0x4).
The program '[2308] java.exe: Native' has exited with code 4 (0x4).

debug01.png

JVM学习——1. win10 下构建64位 openJDK8 完整篇 之前面试的时候总是能碰到关于JVM的问题,这次下定决心研究一下。开篇的时候说是要编译一个openjdk,真不容易,折腾了大约有2-3天,其中走了一些弯路,参考的文章链接见底部,建议不用看他们的了,因为就是参考的太多,反而犯了一些错误,耽误了很长时间,钻进了思维死角里。废话少说,上干货。 编译环境说明 win10 cygwin 64位最新版本,别太旧就... 阅读详情

相关推荐

windows10编译openjdk详细步骤与经验总结

一、前言 现在要编译的是openjdk12,编译成的虚拟机位数为64位,操作系统是64位的win10;不满足以上需求的请慎重参考此文。 以下操作可能不适用于编译更低版本的openjdk,但可能适用于更高的版本。而且随着cygwin中包的更新,可能就会出现问题。 openjdk的编译和调试过程可以参考《深入理解java虚拟机》第一章,或《HotSpot实战》第一章(但基本没啥用,哈哈)。 最权威的参考在你下载并解压的源码中,路径是: doc/building.html(较低版本的不一定)。可以用谷歌浏览器打开

qq_23133409的博客 4195

OpenJDK 8 安装

通常 OpenJDK 8 和 11 都能互相编译和通用。 我们建议使用 11,但是如果你使用 JDK 8 的话也是没有问题的。 建议配置使用 OpenJDK,不建议使用 Oracle JDK,主要是因为版本问题。 OpenJDK is working, system doesn’t require install Oracle JDK. 下载 针对使用 OpenJDK,我们可以使用 RedHat 的编译版本来进行下载和安装。 下载地址为:Red Hat build of OpenJDK Downl

HONEY MOOSE 9402

linux编译openjdk8

最近在看《深入理解java虚拟机》,第一章主要讲java历史,有点意思的是编译openjdk,想自己试着搞搞,但是书上编译的是7,而且要配置一堆的配置文件,就上网查查,openjdk8貌似不用配置这么多,就试着编译8。纪录一下操作过程。 ** 编译 ** 系统:centOs 7.5 64位(刚开始用的腾讯云1核1g,编译的时候说内存不够,好在腾讯云5天免费退,改成1核2g) 1、下载openjdk...

Michael曾的博客 5229

windows10编译OpenJDK8

Windows10编译OpenJDK8 前言 本文基于win10(64位)编译openjdk8,碰到各种问题被卡住,最终还好编译完成,总结如下,希望对你有帮助 1. 环境准备 Windows 10 oracleJDK8 官方下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.h...

十十办文武的博客 4610

Window10下编译openjdk8

关于偏向锁,无论是书籍还是博客,都没有清晰的说明。于是想自己研究,最终决定自己编译jdk。 参考文档https://github.com/unofficial-openjdk/openjdk/blob/jdk8u/jdk8u/README-builds.html。每个openjdk版本build说明略有差异(要求准备工具不同,例如openjdk9需要jdk8,vs2013,Cygwin等),要编译哪个版本首先要阅读对应的说明。 一.需要工具:1.openjdk。首先下载openjdk源码https://

qiub649691422的博客 1074

Windows10下编译openjdk16

Windows10下编译openjdk16 之前编译过openjdk8,但在windows下编译器支持不是很有好,虽然能够调试,但很多报红,对于有强迫症的人来说不能忍受。发现Clion对于新版本jdk能够自动编译构建,包括集成vs工具链,最终目标是全自动,且没有报红。 准备工作:阅读https://github.com/openjdk/jdk16/blob/master/doc/building.md。首选当然是官方文档,参考这个才能避免更多错误。 一. 工具 openjdk16。选择了当前最新版本

qiub649691422的博客 1179

Java虚拟机原理分析之Win10下VS2017编译OpenJDK8与单步调试HotSpot VM过程详细记录

继上一篇文章我们在Win7+VS2010环境下成功编译出了x86版本的OpenJDK后,本文记录了Win10下VS2017编译OpenJDK8与单步调试HotSpot VM的过程,着重介绍其中遇到的错误与解决方案。

LPWSTR的博客 4989

【项目实战】下载OpenJDK的Java 8

下载 OpenJDK 8 是一个获取 Java 8 的免费且开源的方式。OpenJDK 是 Java 平台的一个开源实现,由 Oracle 和社区共同维护。

奶爸的编程之路,也就一周冷个三天 1630

Win10下编译OpenJDK8

导航目录Win10下编译OpenJDK8编译环境编译前准备1.安装 Visual Studio 2010 Professional2. 准备OpenJDK83. 编译JDK环境安装4. 安装Cygwin5. 准备FreeType-2.7开始编译1.生成编译配置脚本2.编译JDK失败问题处理1.提示cygwin太老,但使用的cygwin确实是1.7版本以后的版本 Win10下编译OpenJDK8  ...

qq0012520的博客 1432

Java:JDK下载与安装

具体方法同 “java_home”,我的 jre_home 路径为 “D:\Program Files\Java\openjdk-11+28_windows-x64_bin\jdk-11\jre”,注意 jre 是手动生成的,因为在 openjdk11 中去除了 jre。% jre_home%\bin”,(其中 “% java_home%” 的意思为刚才设置 java_home 的值),将变量值上移。% java_home%\jre\bin”,(其中 “% java_home%” 的意思为刚才。

weiweiqiao的专栏 6955

OpenJDK 8 安装指南

在分布式系统中,Apache Kafka 是一个非常受欢迎的消息中间件。它提供了高吞吐量、低延迟的消息传递机制,非常适合处理实时数据流。本文将介绍如何在 Java 中使用 Kafka Producer 并实现单例模式,以确保资源的有效管理。Kafka 是一个分布式流处理平台,它的核心功能包括发布和订阅记录流、存储流记录、以及处理流记录。为了充分利用 Kafka 的功能,一个高效的 Kafka 生产者(Producer)是必要的。

专注于全栈开发领域 7587

windows10 编译openjdk8

所需工具 Cygwin http://www.cygwin.com/setup-x86_64.exe freetype https://download.savannah.gnu.org/releases/freetype/ openjdk8 https://download.java.net/openjdk/jdk8/promoted/b132/openjdk-8-src-b132-03_mar_2014.zip visual studio 2010 安装软件 安装cygwin ...

qq_35559877的博客 948

OpenJDK 1.8 最佳实践:Windows 64位系统终极指南

OpenJDK(Open Java Development Kit)是一个开源的Java开发平台,提供了一个开放源代码版本的Java运行环境,其中包括Java虚拟机(JVM)、类库、Java编译器和其他组件。OpenJDK 1.8是其中一个重要版本,它在功能和性能上都进行了显著的改进。函数式接口是只有一个抽象方法的接口。它们是Lambda表达式的基石。Java 8提供了一系列预定义的函数式接口,用于处理常见场景,如ConsumerSupplierFunctionPredicate等。

weixin_35982453的博客 1183

windows10 编译openjdk8及坑

我只试过win10下编译,踩到的坑也不少。简单记录一下,有可能某些没有截图。 1.准备安装或者解压工具 一下几款工具已经放到网盘,整套都是我编译时期用过的。省去自己下载的麻烦和不兼容问题。 ① 安装 vs 2010 英文版 用中文版的几乎都翻车了。安装时,只需要c++功能。 注意坑 : vs安装路径不要有空格,不要有中文,默认安装路径别用了 。安装cygwin也需要注意。 ② 安装 cygwin 下面几个功能要在安装时下载, 看如下链接 https://www.cnblogs.com/jpf

Shadow的专栏 1557

COMSOL仿真分析高压直流GIS/GIL绝缘性能优化

高压直流气体绝缘设备(GIS/GIL)的绝缘性能是保障电网可靠运行的关键。通过COMSOL Multiphysics多物理场仿真,可以深入分析气固界面电场分布与电荷积聚机理。该技术结合静电场、热场和电荷传输耦合计算,能准确模拟温度梯度对SF6气体与环氧树脂界面特性的影响。工程实践中,这类仿真可优化导体结构设计、改进绝缘材料配方,并建立电场-温度关联预警模型。特别是在80℃高温工况下,仿真显示界面电荷密度会显著增加23%,这对设备安全运行具有重要指导价值。

weixin_32075843的博客 192

新手必看!Cisco Packet Tracer 8.2从安装到完成第一个局域网实验(附常见问题解决)

本文为网络新手提供了Cisco Packet Tracer 8.2的完整入门指南。从官方下载安装、界面熟悉,到核心的拖拽设备、连线、配置IP地址三步操作,手把手教你完成第一个局域网组网实验。文章重点讲解了如何通过Ping命令验证连通性,并附带了连线错误、IP配置不当等常见问题的解决思路,帮助初学者快速上手这款强大的思科模拟器。

android的专栏 869

在Windows平台编译OpenJdk8

学习了一段时间OpenJdk源码后,需要实践来验证自己对jvm各个组件运作机制的理解是否正确,这需要通过调试jvm来实现,而在windows平台编译openjdk是比较繁琐的,这其中遇到了一些坑,记录下build的过程以备不时之需。

vs2008ASPNET的专栏 825

【STM32H7实战】SDMMC总线优化与FatFs文件系统高效读写技巧

本文详细介绍了STM32H7中SDMMC总线优化与FatFs文件系统高效读写技巧,包括时钟配置、DMA传输、缓存策略等关键优化点。通过实测数据对比,展示了从2.7MB/s提升至11.8MB/s读取速度的优化效果,适用于需要高性能SD卡读写的嵌入式开发场景。

e6f7g8h9i的博客 483

Windows 编译并调试OpenJDK21

Windows 编译并调试OpenJDK21

Myron的博客 1546

告别手动打卡:逍遥模拟器+宥马运动自动跑步脚本配置全流程

本文详细介绍了如何利用逍遥模拟器和自动化脚本实现宥马运动的自动跑步功能,告别手动打卡的繁琐。从环境准备、脚本部署到定位配置和智能调度,全流程指导用户完成自动化设置,提升效率并确保运动数据的真实性。

weixin_42532473的博客 546

`全网最细!! 入门必看Git教程链接:https://gitee.com/all-about-git`

全网 Git 入门教程 gitee.com。如果显示The requested URL returned error: 403错误,那就表示没有和window本地建立token令牌

qq_37855368的博客 3749

windows10上编译openjdk12

1. 安装cygwin64 下载地址:https://cygwin.com/setup-x86_64.exe 至少需要安装 autoconf,zip,unzip,make, tar 2. 安装好JDK11如: D:/opt/jdk11 3. 安装英文版 vs2017community 版 一定要英文版,否则需要你改半天 common/autoconf/generat...

weixin_45040801的博客 2086

STM32F103C8T6飞控入门:从零开始,用HAL库和MPU6050搭建你的第一架四轴无人机

本文详细介绍了如何使用STM32F103C8T6和MPU6050模块从零开始搭建四轴无人机飞控系统。通过硬件选型、电路设计、HAL库配置、姿态解算算法实现以及PID控制等步骤,帮助创客和嵌入式爱好者快速入门飞控开发。文章还提供了实用的调试技巧和常见问题解决方案,适合想要掌握四旋翼无人机核心技术的开发者。

weixin_42524750的博客 266
上一篇: 高级 JAVA 工程师卷 1
下一篇: EasyExcel-读取多个sheet的方法
普通网友
博客等级 码龄1年 37粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值