网站首页 > 精选教程 正文
Windows 10 下编译 64 位 OpenJDK 8 软件版本
- 操作系统:Windows 10
- Cygwin:3.5.4-1
- Visual Studio:2010 英文版
- freetype: 2.7
- Boot JDK:7
- 编译的 OpenJDK 版本:8
安装 boot JDK
从下载链接下载 JDK,然后在 Windows 上安装。安装完成后配置 JAVE_HOME 环境变量,如下图所示:
bootjdk02.png
在已有的 Path 环境变量加入 %JAVA_HOME%\bin ,如下图所示:
bootjdk03.png
配置完成后在 cmd 中执行 java -version 命令,可以看到对应的版本信息,则证明已配置好,如下图所示:
安装 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 命令,如下图所示:
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 按钮启动调试报错如下:
Cannot find or open the PDB file
The thread 'Win64 Thread' (0x1048) has exited with code 4 (0x4)
debug01.png
这个需要重新 build 一下项目,见配置单步调试
参考
Win10下编译OpenJDK8
Windows10下编译openjdk8
编译openjdk && 调试java
Windows10下vs2010单步调试jvm
Java虚拟机原理分析之Win7下VS2010编译OpenJDK8与单步调试HotSpot VM过程详细记录
building open jdk 8
- 上一篇: 浪潮服务器如何用IPMI安装Linux系统
- 下一篇: 深入理解Java虚拟机之自己编译JDK
猜你喜欢
- 2024-12-30 工作流引擎发展史(Activiti主创人员的跳槽史)
- 2024-12-30 jdk动态代理和cglib动态代理的区别
- 2024-12-30 推荐 10 个Java 项目必备 Maven 插件
- 2024-12-30 数字签名的过程是怎样的?为何使用工具和自己算出来的不一样?
- 2024-12-30 一开工,就遇到上亿(MySQL)大表的优化,我的天啊!
- 2024-12-30 宝马阿布达比分公司推出独特M4升级套件,整套升级约在20万
- 2024-12-30 浅谈字节码增强技术系列2-Asm与Cglib
- 2024-12-30 Spring Boot 最新发布,支持 Java 19,这速度太快了
- 2024-12-30 连 Kafka 的稳定性都不懂,也敢说自己会用Kafka
- 2024-12-30 Dicom 基本知识-数据结构篇 dijkstra数据结构
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)