概述
所用工具
- Windows10 64位
- OpenJDK15 源文件
- OracleJDK15
- Visual Studio 2019
- cygwin 3.1
背景知识
JDK,JRE,SDK,JVM
什么是 JDK,JRE,SDK,JVM?
- JDK (Java Development Kit)Java开发工具箱, JRE (Java Runtime
Environment)Java运行时环境, SDK(Software Development Kit)软件开发工具箱,JVM(Java Virtual Machine)Java虚拟机. - SDK是广义上的软件开发包,JDK特指JAVA软件开发包。所以定义范畴上SDK包括JDK。
他们的包含关系是JDK->JRE->JVM,JVM是直接和操作系统沟通的。
为什么要编译JDK,为什么使用OpenJDK?
- 从历史上来讲OpenJDK是开源的,OracleJDK是收费的的。但是库的代码基本相同,其中只有极少不同不同代码来实现了极其相同的功能。
- OpenJDK完全开源,可以看全部源码,OracleJDK部分开源,可以看部分源码。
所以我们可以通过OpenJDK查看源码,也可以通过改写openJDK源码编译出自己的JDK,来学习JAVA源码的奥秘。
JDK 源文件
JDK源文件是.java文件, .h文件, .cpp文件等等(JDK源码是用C,C++,和JAVA共同完成的,但也包括了.sh文件等帮助编译和其他功能的代码。)
所以JDK源码编译不但需要 C compiler,也需要已经编译好的JDK来进行编译。
所需工具
Cygwin 3.1
Cygwin是一个在windows上模拟Linux环境的工具,我们需要Linux平台下的GNU make等其他工具来帮助我们build整个JDK。
我们进行Default安装,默认安装在C盘根目录下。
然后输入命令:
<path to Cygwin setup>/setup-x86_64 -q -P autoconf -P make -P unzip -P zip
setup-x86_64 是Cygwin安装程序,此语句用来额外安装 autoconf,make,unzip和zip四个工具。
下载地址: http://www.cygwin.com/
Visual Studio 2019
-
刚才提到JDK有一部分是用C和C++编写的,所以需要 Windows SDK来进行编译,官方文档中同时写道OpenJDK就是在Visual
Studio环境下编译完成的。 -
安装时,我们需要勾选使用C++的桌面开发,其中含有我们需要的Windows SDK 即 C compiler.
下载地址 : https://visualstudio.microsoft.com/zh-hans/downloads/
已经编译好的JDK14或15
听起来很奇怪,已经有了编译好的JDK,我们还编译什么呢?这是由于很大一部分JDK源码是用Java写成的,我们需要一个BootStrap JDK来编译JAVA代码 所需的JDK应该是同版本号或同版本-1的。eg:编译OpenJDK15我们需要JDK14或15。
下载地址: https://www.oracle.com/java/technologies/javase-downloads.html
OpenJDK15 源码
下载地址:http://openjdk.java.net/
具体步骤
configure
首先需要使用autoconf来指定JDK如何生成,并且检查所需的环境和安装项目是否可以进行make.
(下面所说dir代表JDK源码解压后的根目录)
首先需要使用autoconf。我们在cygwin中调用
( dir 代表JDK源码解压后的根目录)
dir/configure
这是一个wrapper文件,实际上来调用
dir/make/autoconf
最终调用
dir/build/.configure-support/generated-configure.sh
( dir 代表JDK源码解压后的根目录)。遇到报错根据config.log和configure.log中的提示进行debug。
指令: ./configure +Arguments
eg:./configure --with-devkit=/cygdrive/d/Program_Files_x86
注意:其中的path应写为Linux style
eg: windows下的路径 C:Programeditor
在此处应写为 cygwin/c/Program/editor
(这代表cygwin的虚拟路径,c为盘符)
- 如下的 Arguments 可以指定configure时需要的程序的路径及参数等
--with-devkit=<path> - Use this devkit for compilers, tools and resources
--with-sysroot=<path> - Use this directory as sysroot
--with-extra-path=<path>[;<path>] - Prepend these directories to the default path when searching for all kinds of binaries
--with-toolchain-path=<path>[;<path>] - Prepend these directories when searching for toolchain binaries (compilers etc)
--with-extra-cflags=<flags> - Append these flags when compiling JDK C files
--with-extra-cxxflags=<flags> - Append these flags when compiling JDK C++ files
--with-extra-ldflags=<flags> - Append these flags when linking JDK libraries
更多Aruguments可见JDK源码中的文件:dir/doc/building.html
make
make 便是调用configure步骤已经生成好的配置文件 来进行编译。
直接在cygwin中输入make
make
test
test 测试已经生成的JDK是否可用。具体使用的test suit因人而异,可见jdk源码文件夹下的test文档。
最基本的test
make run-test-tier1
注意事项
- 最好将所有文件放在非中文路径,并且路径中不要包含空格和()括号等,引起不必要的麻烦。
- 有可能会出现很多因人而异的Bug,在万行以上的代码中debug实属不易,有条件可以尝试Linux,MacOS等平台。
- 在操作之前请先阅读JDK源码中的官方文档。
最后
以上就是痴情老师为你收集整理的在Windows10上编译OpenJDK15的流程和思路的全部内容,希望文章能够帮你解决在Windows10上编译OpenJDK15的流程和思路所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复